diff --git a/packages/userscript/src/main.ts b/packages/userscript/src/main.ts
index cbe2ae3..010ac60 100644
--- a/packages/userscript/src/main.ts
+++ b/packages/userscript/src/main.ts
@@ -9,8 +9,6 @@ const twitterIconSvgInner = ''
-// const twitterIconSvg = ``
-
const linkMap: Record = {
'mask-icon': 'https://abs.twimg.com/responsive-web/client-web/icon-svg.168b89da.svg',
'shortcut icon': '//abs.twimg.com/favicons/twitter.2.ico',
@@ -20,10 +18,11 @@ const metaMap: Record = {
'apple-mobile-web-app-title': 'Twitter',
}
+const checkedElements = new WeakSet()
+
function main() {
+ injectStyle()
onloadSafe(() => {
- injectStyle()
-
const placeHolderIconSelector = '#placeholder > svg'
replaceIcon(placeHolderIconSelector, 'twitter-blue')
@@ -43,8 +42,8 @@ function main() {
// Fuzzy matching for all 𝕏 icons
sentinel.on('svg', (svg) => {
- if (svg.getAttribute('data-replaced') === 'true') return
- svg.setAttribute('data-replaced', 'true')
+ if (checkedElements.has(svg)) return
+ checkedElements.add(svg)
if (svg.innerHTML === xIconSvgInner) svg.innerHTML = twitterIconSvgInner
if (svg.innerHTML === xIconInNotification) svg.innerHTML = twitterIconSvgInner
@@ -111,8 +110,8 @@ function injectStyle() {
function replaceIcon(selector: string, applyStyle?: string) {
sentinel.on(selector, (svg) => {
- if (svg.getAttribute('data-replaced') === 'true') return
- svg.setAttribute('data-replaced', 'true')
+ if (checkedElements.has(svg)) return
+ checkedElements.add(svg)
svg.innerHTML = twitterIconSvgInner
if (applyStyle) svg.classList.add(applyStyle)