From ad926dbc3173c7303bf7201433cb251da4131f05 Mon Sep 17 00:00:00 2001 From: hackademix Date: Sun, 4 Oct 2020 17:28:27 +0200 Subject: [PATCH] Improved NOSCRIPT element emulation compatibility with XML documents. --- src/content/onScriptDisabled.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/content/onScriptDisabled.js b/src/content/onScriptDisabled.js index d0ebfd4..595906b 100644 --- a/src/content/onScriptDisabled.js +++ b/src/content/onScriptDisabled.js @@ -8,7 +8,8 @@ function onScriptDisabled() { for (let noscript of document.querySelectorAll("noscript")) { // force show NOSCRIPT elements content - let replacement = document.createRange().createContextualFragment(noscript.innerHTML); + let replacement = createHTMLElement("span"); + replacement.innerHTML = noscript.innerHTML; // emulate meta-refresh for (let meta of replacement.querySelectorAll('meta[http-equiv="refresh"]')) { refresh = true; @@ -25,9 +26,13 @@ function onScriptDisabled() { let html = document.documentElement.outerHTML; let rewrite = () => { let document = window.wrappedJSObject ? window.wrappedJSObject.document : window.document; - document.open(); - document.write(html); - document.close(); + try { + document.open(); + document.write(html); + document.close(); + } catch (e) { + error(e); + } }; if (document.readyState === "complete") { rewrite(); @@ -52,7 +57,7 @@ function onScriptDisabled() { addEventListener("keyup", ev => { if (!ev.isTrusted) return; let el = eraser.tapped; - if (el && ev.keyCode === 46) { + if (el && ev.code === "Delete" || ev.code === "Backspace") { eraser.tapped = null; eraser.delKey = true; let doc = el.ownerDocument;