Răsfoiți Sursa

minor refactoring

Gildas 7 ani în urmă
părinte
comite
40aebf06a8
1 a modificat fișierele cu 21 adăugiri și 4 ștergeri
  1. 21 4
      lib/single-file/single-file-core.js

+ 21 - 4
lib/single-file/single-file-core.js

@@ -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) {