Skip to content

Instantly share code, notes, and snippets.

@RtYkk
Forked from mitian233/switch-twitter-icon.js
Created July 25, 2023 01:16
Show Gist options
  • Save RtYkk/9aad6a10c7f543355c42e4faaf95ecd3 to your computer and use it in GitHub Desktop.
Save RtYkk/9aad6a10c7f543355c42e4faaf95ecd3 to your computer and use it in GitHub Desktop.
Switch Twitter Icon
// ==UserScript==
// @name Switch twitter icon
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Switch twitter icon
// @author mikan_chn
// @match https://twitter.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
const logoSelector = 'h1[role="heading"] a > div > svg';
const replaceSvg = '<svg viewBox="0 0 24 24" aria-hidden="true" class="r-1cvl2hr r-4qtqp9 r-yyyyoo r-16y2uox r-8kz0gk r-dnmrzs r-bnwqim r-1plcrui r-lrvibr r-lrsllp"><g><path d="M23.643 4.937c-.835.37-1.732.62-2.675.733.962-.576 1.7-1.49 2.048-2.578-.9.534-1.897.922-2.958 1.13-.85-.904-2.06-1.47-3.4-1.47-2.572 0-4.658 2.086-4.658 4.66 0 .364.042.718.12 1.06-3.873-.195-7.304-2.05-9.602-4.868-.4.69-.63 1.49-.63 2.342 0 1.616.823 3.043 2.072 3.878-.764-.025-1.482-.234-2.11-.583v.06c0 2.257 1.605 4.14 3.737 4.568-.392.106-.803.162-1.227.162-.3 0-.593-.028-.877-.082.593 1.85 2.313 3.198 4.352 3.234-1.595 1.25-3.604 1.995-5.786 1.995-.376 0-.747-.022-1.112-.065 2.062 1.323 4.51 2.093 7.14 2.093 8.57 0 13.255-7.098 13.255-13.254 0-.2-.005-.402-.014-.602.91-.658 1.7-1.477 2.323-2.41z"/></g></svg>';
const svgElement = document.querySelectorAll(logoSelector);
function waitSvgLoad(mutationsList, observer){
for (const mutation of mutationsList) {
if (mutation.type === 'childList' && mutation.addedNodes.length) {
// 如果有新的节点添加到DOM中,检查是否有匹配的SVG元素
const svgElements = document.querySelectorAll(logoSelector);
if (svgElements.length > 0) {
// 找到了SVG元素,停止监视DOM变化
observer.disconnect();
// 替换每个SVG元素
svgElements.forEach(svgElement => {
// 创建一个新的SVG元素
const newSVG = document.createElement('div');
newSVG.innerHTML = replaceSvg;
// 复制其他属性
for (const { name, value } of svgElement.attributes) {
if (name !== 'src') {
newSVG.setAttribute(name, value);
}
}
// 替换原有的SVG元素
svgElement.parentNode.replaceChild(newSVG, svgElement);
});
}
}
}
}
// 创建MutationObserver实例
const observer = new MutationObserver(waitSvgLoad);
// 开始观察整个document的变化
observer.observe(document, { childList: true, subtree: true });
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment