|
@@ -778,7 +778,19 @@ class Processor {
|
|
|
|
|
|
|
|
removeDiscardedResources() {
|
|
removeDiscardedResources() {
|
|
|
this.doc.querySelectorAll("." + util.SINGLE_FILE_UI_ELEMENT_CLASS).forEach(element => element.remove());
|
|
this.doc.querySelectorAll("." + util.SINGLE_FILE_UI_ELEMENT_CLASS).forEach(element => element.remove());
|
|
|
- this.doc.querySelectorAll("meta[http-equiv=refresh], meta[disabled-http-equiv], meta[http-equiv=\"content-security-policy\"]").forEach(element => element.remove());
|
|
|
|
|
|
|
+ const noscriptPlaceholders = new Map();
|
|
|
|
|
+ this.doc.querySelectorAll("noscript").forEach(noscriptElement => {
|
|
|
|
|
+ const placeholderElement = this.doc.createElement("div");
|
|
|
|
|
+ placeholderElement.innerHTML = noscriptElement.dataset.singleFileDisabledNoscript;
|
|
|
|
|
+ noscriptElement.replaceWith(placeholderElement);
|
|
|
|
|
+ noscriptPlaceholders.set(placeholderElement, noscriptElement);
|
|
|
|
|
+ });
|
|
|
|
|
+ this.doc.querySelectorAll("meta[http-equiv=refresh], meta[disabled-http-equiv]").forEach(element => element.remove());
|
|
|
|
|
+ Array.from(noscriptPlaceholders).forEach(([placeholderElement, noscriptElement]) => {
|
|
|
|
|
+ noscriptElement.dataset.singleFileDisabledNoscript = placeholderElement.innerHTML;
|
|
|
|
|
+ placeholderElement.replaceWith(noscriptElement);
|
|
|
|
|
+ });
|
|
|
|
|
+ this.doc.querySelectorAll("meta[http-equiv=\"content-security-policy\"]").forEach(element => element.remove());
|
|
|
const objectElements = this.doc.querySelectorAll("applet, object[data]:not([type=\"image/svg+xml\"]):not([type=\"image/svg-xml\"]):not([type=\"text/html\"]), embed[src]:not([src*=\".svg\"]):not([src*=\".pdf\"])");
|
|
const objectElements = this.doc.querySelectorAll("applet, object[data]:not([type=\"image/svg+xml\"]):not([type=\"image/svg-xml\"]):not([type=\"text/html\"]), embed[src]:not([src*=\".svg\"]):not([src*=\".pdf\"])");
|
|
|
this.stats.set("discarded", "objects", objectElements.length);
|
|
this.stats.set("discarded", "objects", objectElements.length);
|
|
|
this.stats.set("processed", "objects", objectElements.length);
|
|
this.stats.set("processed", "objects", objectElements.length);
|