More accurate NOSCRIPT element emulation.
This commit is contained in:
parent
5d92d1b974
commit
35d82bd801
|
@ -102,6 +102,7 @@ window.addEventListener("securitypolicyviolation", e => {
|
|||
Messages.send("violation", {url, type});
|
||||
}, true);
|
||||
|
||||
|
||||
ns.on("capabilities", () => {
|
||||
seen.record({
|
||||
request: {
|
||||
|
|
|
@ -6,26 +6,36 @@ function onScriptDisabled() {
|
|||
onScriptDisabled = () => {};
|
||||
let refresh = false;
|
||||
for (let noscript of document.querySelectorAll("noscript")) {
|
||||
|
||||
// force show NOSCRIPT elements content
|
||||
let replacement = createHTMLElement("span");
|
||||
replacement.innerHTML = noscript.innerHTML;
|
||||
noscript.replaceWith(replacement);
|
||||
let replacement = document.createRange().createContextualFragment(noscript.innerHTML);
|
||||
// emulate meta-refresh
|
||||
let meta = replacement.querySelector('meta[http-equiv="refresh"]');
|
||||
if (meta) {
|
||||
for (let meta of replacement.querySelectorAll('meta[http-equiv="refresh"]')) {
|
||||
refresh = true;
|
||||
document.head.appendChild(meta);
|
||||
console.log(`State %s, emulating`, document.readyState, meta);
|
||||
}
|
||||
|
||||
if (noscript.closest("head") && document.body) {
|
||||
document.body.insertBefore(noscript, document.body.firstChild);
|
||||
}
|
||||
noscript.replaceWith(replacement);
|
||||
}
|
||||
if (refresh) {
|
||||
let html = document.documentElement.outerHTML;
|
||||
window.addEventListener("load", e => {
|
||||
if (!e.isTrusted) return;
|
||||
let rewrite = () => {
|
||||
let document = window.wrappedJSObject ? window.wrappedJSObject.document : window.document;
|
||||
document.open();
|
||||
document.write(html);
|
||||
document.close();
|
||||
});
|
||||
};
|
||||
if (document.readyState === "complete") {
|
||||
rewrite();
|
||||
} else {
|
||||
window.addEventListener("load", e => {
|
||||
if (e.isTrusted) rewrite();
|
||||
});
|
||||
}
|
||||
}
|
||||
{
|
||||
let eraser = {
|
||||
|
|
Loading…
Reference in New Issue