diff options
Diffstat (limited to 'src/scripts')
| -rw-r--r-- | src/scripts/block-unnecessary.ts | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/src/scripts/block-unnecessary.ts b/src/scripts/block-unnecessary.ts index 4163778..bec90a5 100644 --- a/src/scripts/block-unnecessary.ts +++ b/src/scripts/block-unnecessary.ts @@ -1,23 +1,30 @@ -type ConditionalString = string | undefined; -let blocked: ConditionalString[] = [ - "head > script:nth-child(34)", - "head > script:nth-child(43)" +let replace: (any[] | undefined)[] = [ + ["head > script:nth-child(34)", { src: "" }], + ["head > script:nth-child(35)", { src: "https://code.jquery.com/jquery-1.12.4.min.js", crossorigin: "anonymous" }], + ["head > script:nth-child(43)", { src: "" }] ]; let count = 0; +let notDone = false; -const observer = new MutationObserver(mutations => { - for (let i = 0; i < blocked.length; i++) { - if (blocked[i]) { - const element = document.querySelector(blocked[i]!) as HTMLElement | null; +const observer = new MutationObserver(() => { + if (notDone) { + const meta = document.querySelector("head > meta:nth-child(2)"); + if (meta) { + meta.setAttribute("http-equiv", "Content-Security-Policy"); + meta.setAttribute("content", "default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *"); + } + } + for (let i = 0; i < replace.length; i++) { + if (replace[i]) { + const element = document.querySelector(replace[i]![0]) as HTMLElement | null; if (element) { - if (element instanceof HTMLScriptElement) { - element.src = ""; - } else if (element instanceof HTMLLinkElement && element.getAttribute("rel") === "stylesheet") { - element.href = ""; + const attributes = replace[i]![1]; + for (const attribute in attributes) { + element.setAttribute(attribute, attributes[attribute]); } - blocked[i] = undefined; + replace[i] = undefined; count++; - if (count >= blocked.length) { + if (count >= replace.length) { observer.disconnect(); break; } |
