Răsfoiți Sursa

better escaping of EOT in script contents

Gildas 7 ani în urmă
părinte
comite
696d58925c

+ 3 - 0
lib/single-file/html-serializer.js

@@ -89,6 +89,9 @@ this.serializer = this.serializer || (() => {
 			parentTagName = parentNode.tagName.toLowerCase();
 		}
 		if (!parentTagName || TEXT_NODE_TAGS.includes(parentTagName)) {
+			if (parentTagName == "script") {
+				return textNode.textContent.replace(/<\//gi, "<\\/").replace(/\/>/gi, "\\/>");
+			}
 			return textNode.textContent;
 		} else {
 			return textNode.textContent.replace(/&/g, "&amp;").replace(/\u00a0/g, "&nbsp;").replace(/</g, "&lt;").replace(/</g, "&gt;");

+ 1 - 1
lib/single-file/single-file-core.js

@@ -861,7 +861,7 @@ this.SingleFileCore = this.SingleFileCore || (() => {
 				if (scriptElement.src) {
 					this.stats.add("processed", "scripts", 1);
 					const scriptContent = await Download.getContent(scriptElement.src, { asDataURI: false, maxResourceSize: this.options.maxResourceSize, maxResourceSizeEnabled: this.options.maxResourceSizeEnabled });
-					scriptElement.textContent = scriptContent.replace(/<\/script>/gi, "<\\/script>");
+					scriptElement.textContent = scriptContent.replace(/<\//gi, "<\\/").replace(/\/>/gi, "\\/>");
 				}
 				scriptElement.removeAttribute("src");
 			}));