瀏覽代碼

better handling of noscript tags

Former-commit-id: 72a2f4066ed7d1946afdfab17672a0c01ff56aea
Gildas 6 年之前
父節點
當前提交
28eb65ee46

+ 1 - 1
lib/single-file/modules/html-minifier.js

@@ -254,7 +254,7 @@ this.singlefile.lib.modules.htmlMinifier = this.singlefile.lib.modules.htmlMinif
 	}
 
 	function removeEmptyInlineElements(doc) {
-		doc.querySelectorAll("style, script:not([src]), noscript").forEach(element => {
+		doc.querySelectorAll("style, script:not([src])").forEach(element => {
 			if (!element.textContent.trim()) {
 				element.remove();
 			}

+ 1 - 1
lib/single-file/modules/html-serializer.js

@@ -117,7 +117,7 @@ this.singlefile.lib.modules.serializer = this.singlefile.lib.modules.serializer
 			content += ">";
 		}
 		if (element.tagName == "TEMPLATE" && !element.childNodes.length) {
-			content += element.innerHTML || element.dataset.singleFileNoscript;
+			content += element.innerHTML;
 		} else {
 			Array.from(element.childNodes).forEach(childNode => content += serialize(childNode, compressHTML));
 		}

+ 4 - 7
lib/single-file/single-file-helper.js

@@ -92,10 +92,8 @@ this.singlefile.lib.helper = this.singlefile.lib.helper || (() => {
 	function preProcessDoc(doc, win, options) {
 		doc.querySelectorAll("script").forEach(element => element.textContent = element.textContent.replace(/<\/script>/gi, "<\\/script>"));
 		doc.querySelectorAll("noscript").forEach(element => {
-			const disabledNoscriptElement = doc.createElement("template");
-			disabledNoscriptElement.setAttribute(DISABLED_NOSCRIPT_ATTRIBUTE_NAME, "");
-			disabledNoscriptElement.dataset.singleFileNoscript = element.textContent;
-			element.parentElement.replaceChild(disabledNoscriptElement, element);
+			element.setAttribute(DISABLED_NOSCRIPT_ATTRIBUTE_NAME, element.textContent);
+			element.textContent = "";
 		});
 		initDoc(doc);
 		if (doc.head) {
@@ -311,9 +309,8 @@ this.singlefile.lib.helper = this.singlefile.lib.helper || (() => {
 
 	function postProcessDoc(doc, markedElements) {
 		doc.querySelectorAll("[" + DISABLED_NOSCRIPT_ATTRIBUTE_NAME + "]").forEach(element => {
-			const noscriptElement = doc.createElement("noscript");
-			noscriptElement.textContent = element.dataset.singleFileNoscript;
-			element.parentElement.replaceChild(noscriptElement, element);
+			element.textContent = element.getAttribute(DISABLED_NOSCRIPT_ATTRIBUTE_NAME);
+			element.removeAttribute(DISABLED_NOSCRIPT_ATTRIBUTE_NAME);
 		});
 		doc.querySelectorAll("meta[disabled-http-equiv]").forEach(element => {
 			element.setAttribute("http-equiv", element.getAttribute("disabled-http-equiv"));