|
|
@@ -312,7 +312,7 @@ const SingleFileCore = (() => {
|
|
|
}
|
|
|
|
|
|
removeDiscardedResources() {
|
|
|
- this.doc.querySelectorAll("applet, meta[http-equiv=refresh], object:not([type=\"image/svg+xml\"]):not([type=\"image/svg-xml\"]), embed:not([src*=\".svg\"]), link[rel*=preload], link[rel*=prefetch]").forEach(element => element.remove());
|
|
|
+ this.doc.querySelectorAll("applet, meta[http-equiv=refresh], object:not([type=\"image/svg+xml\"]):not([type=\"image/svg-xml\"]):not([type=\"text/html\"]), embed:not([src*=\".svg\"]), link[rel*=preload], link[rel*=prefetch]").forEach(element => element.remove());
|
|
|
this.doc.querySelectorAll("[onload]").forEach(element => element.removeAttribute("onload"));
|
|
|
this.doc.querySelectorAll("[onerror]").forEach(element => element.removeAttribute("onerror"));
|
|
|
this.doc.querySelectorAll("audio[src], video[src]").forEach(element => element.removeAttribute("src"));
|
|
|
@@ -323,7 +323,7 @@ const SingleFileCore = (() => {
|
|
|
}
|
|
|
|
|
|
removeFrames() {
|
|
|
- this.doc.querySelectorAll("iframe, frame").forEach(element => element.remove());
|
|
|
+ this.doc.querySelectorAll("iframe, frame, object[type=\"text/html\"][data]").forEach(element => element.remove());
|
|
|
}
|
|
|
|
|
|
removeImports() {
|
|
|
@@ -488,7 +488,7 @@ const SingleFileCore = (() => {
|
|
|
}
|
|
|
|
|
|
async frames(initialization) {
|
|
|
- let frameElements = this.doc.querySelectorAll("iframe, frame");
|
|
|
+ let frameElements = this.doc.querySelectorAll("iframe, frame, object[type=\"text/html\"][data]");
|
|
|
frameElements = DomUtil.removeNoScriptFrames(frameElements);
|
|
|
await Promise.all(frameElements.map(async (frameElement, frameIndex) => {
|
|
|
const frameWindowId = (this.options.windowId || "0") + "." + frameIndex;
|
|
|
@@ -519,16 +519,28 @@ const SingleFileCore = (() => {
|
|
|
return frameData.processor.initialize();
|
|
|
}
|
|
|
} else {
|
|
|
+ if (frameElement.tagName == "OBJECT") {
|
|
|
+ frameElement.setAttribute("data", "about:blank");
|
|
|
+ } else {
|
|
|
frameElement.setAttribute("src", "about:blank");
|
|
|
+ }
|
|
|
if (frameData.processor) {
|
|
|
const pageData = await frameData.processor.getPageData();
|
|
|
+ if (frameElement.tagName == "OBJECT") {
|
|
|
+ frameElement.setAttribute("data", "data:text/html," + pageData.content);
|
|
|
+ } else {
|
|
|
frameElement.setAttribute("srcdoc", pageData.content);
|
|
|
frameElement.sandbox = true;
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
} else {
|
|
|
+ if (frameElement.tagName == "OBJECT") {
|
|
|
+ frameElement.setAttribute("data", "about:blank");
|
|
|
+ } else {
|
|
|
frameElement.setAttribute("src", "about:blank");
|
|
|
}
|
|
|
+ }
|
|
|
}));
|
|
|
}
|
|
|
|