Browse Source

fixed issue with self closing tags found in regexp when replacing scripts

Gildas 7 năm trước cách đây
mục cha
commit
389d85ba25
1 tập tin đã thay đổi với 15 bổ sung1 xóa
  1. 15 1
      lib/single-file/single-file-core.js

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

@@ -883,7 +883,21 @@ this.SingleFileCore = this.SingleFileCore || (() => {
 				if (scriptElement.src) {
 					this.stats.add("processed", "scripts", 1);
 					const content = await DocUtil.getContent(scriptElement.src, { asDataURI: false, maxResourceSize: this.options.maxResourceSize, maxResourceSizeEnabled: this.options.maxResourceSizeEnabled });
-					scriptElement.textContent = content.data.replace(/<\//gi, "<\\/").replace(/\/>/gi, "\\/>");
+					let scriptContent = content.data.replace(/<\//gi, "<\\/");
+					try {
+						new Function(scriptContent);
+					} catch (error) {
+						scriptContent = content.data.replace(/<\//gi, "<\\\\/");
+					}
+					try {
+						new Function(scriptContent);
+						scriptContent = scriptContent.replace(/\/>/gi, "\\/>");
+					} catch (error) {
+						// ignored
+					}
+					if (scriptContent) {
+						scriptElement.textContent = scriptContent;
+					}
 				}
 				scriptElement.removeAttribute("src");
 			}));