Created
July 24, 2023 15:05
-
-
Save mitian233/8024014412d9f801046d7dce60b21544 to your computer and use it in GitHub Desktop.
Switch Twitter Icon
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==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