Prechádzať zdrojové kódy

embed script files into data URIs

Gildas 7 rokov pred
rodič
commit
5dfdf1f824
1 zmenil súbory, kde vykonal 6 pridanie a 18 odobranie
  1. 6 18
      lib/single-file/single-file-core.js

+ 6 - 18
lib/single-file/single-file-core.js

@@ -876,31 +876,19 @@ this.SingleFileCore = this.SingleFileCore || (() => {
 		async processScripts() {
 			await Promise.all(Array.from(this.doc.querySelectorAll("script[src]")).map(async scriptElement => {
 				let resourceURL;
+				const scriptSrc = scriptElement.getAttribute("src");
+				scriptElement.removeAttribute("src");
+				scriptElement.textContent = "";
 				try {
-					resourceURL = DocUtil.resolveURL(scriptElement.src, this.baseURI);
+					resourceURL = DocUtil.resolveURL(scriptSrc, this.baseURI);
 				} catch (error) {
 					// ignored
 				}
 				if (Util.testValidURL(resourceURL, this.baseURI, this.options.url)) {
 					this.stats.add("processed", "scripts", 1);
-					const content = await DocUtil.getContent(scriptElement.src, { asDataURI: false, maxResourceSize: this.options.maxResourceSize, maxResourceSizeEnabled: this.options.maxResourceSizeEnabled });
-					let scriptContent = content.data.replace(/<\//gi, "<\\/");
-					try {
-						Function(scriptContent);
-					} catch (error) {
-						scriptContent = content.data.replace(/<\//gi, "<\\\\/");
-					}
-					try {
-						Function(scriptContent);
-						scriptContent = scriptContent.replace(/\/>/gi, "\\/>");
-					} catch (error) {
-						// ignored
-					}
-					if (scriptContent) {
-						scriptElement.textContent = scriptContent;
-					}
+					const content = await DocUtil.getContent(resourceURL, { asDataURI: true, maxResourceSize: this.options.maxResourceSize, maxResourceSizeEnabled: this.options.maxResourceSizeEnabled });
+					scriptElement.setAttribute("src", content.data);
 				}
-				scriptElement.removeAttribute("src");
 			}));
 		}