|
|
@@ -448,7 +448,6 @@ this.SingleFileCore = (() => {
|
|
|
await Promise.all(frameElements.map(async (frameElement, frameIndex) => {
|
|
|
const frameWindowId = (this.options.windowId || "0") + "." + frameIndex;
|
|
|
const frameData = this.options.framesData.find(frame => frame.windowId == frameWindowId);
|
|
|
- const setFrameEmptySrc = frameElement => frameElement.setAttribute(frameElement.tagName == "OBJECT" ? "data" : "srcdoc", (frameElement.tagName == "OBJECT" ? "data:text/html," : ""));
|
|
|
if (frameData) {
|
|
|
if (initialization) {
|
|
|
const options = Object.create(this.options);
|
|
|
@@ -464,15 +463,15 @@ this.SingleFileCore = (() => {
|
|
|
return frameData.processor.initialize();
|
|
|
}
|
|
|
} else {
|
|
|
- setFrameEmptySrc(frameElement);
|
|
|
+ DomProcessorHelper.setFrameEmptySrc(frameElement);
|
|
|
if (frameData.processor) {
|
|
|
const pageData = await frameData.processor.getPageData();
|
|
|
- frameElement.setAttribute(frameElement.tagName == "OBJECT" ? "data" : "srcdoc", (frameElement.tagName == "OBJECT" ? "data:text/html," : "") + pageData.content);
|
|
|
+ DomProcessorHelper.setFrameContent(frameElement, pageData.content);
|
|
|
frameElement.setAttribute("sandbox", "");
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- setFrameEmptySrc(frameElement);
|
|
|
+ DomProcessorHelper.setFrameEmptySrc(frameElement);
|
|
|
}
|
|
|
}));
|
|
|
}
|
|
|
@@ -532,6 +531,24 @@ this.SingleFileCore = (() => {
|
|
|
// DomHelper
|
|
|
// ---------
|
|
|
class DomProcessorHelper {
|
|
|
+ static setFrameEmptySrc(frameElement) {
|
|
|
+ if (frameElement.tagName == "OBJECT") {
|
|
|
+ frameElement.setAttribute("data", "data:text/html,");
|
|
|
+ } else {
|
|
|
+ frameElement.setAttribute("srcdoc", "");
|
|
|
+ frameElement.removeAttribute("src");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ static setFrameContent(frameElement, content) {
|
|
|
+ if (frameElement.tagName == "OBJECT") {
|
|
|
+ frameElement.setAttribute("data", "data:text/html," + content);
|
|
|
+ } else {
|
|
|
+ frameElement.setAttribute("srcdoc", content);
|
|
|
+ frameElement.removeAttribute("src");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
static isolateElement(parentElement, element) {
|
|
|
Array.from(parentElement.childNodes).forEach(node => {
|
|
|
if (node == element) {
|