Sfoglia il codice sorgente

escape URLs if needed

Gildas 7 anni fa
parent
commit
5c89eb05be
1 ha cambiato i file con 12 aggiunte e 1 eliminazioni
  1. 12 1
      lib/single-file/single-file-core.js

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

@@ -720,6 +720,13 @@ this.SingleFileCore = this.SingleFileCore || (() => {
 				resourceURL = DomUtil.normalizeURL(resourceURL);
 				if (resourceURL && resourceURL != baseURI && DomUtil.testValidPath(resourceURL)) {
 					stylesheetContent = stylesheetContent.replace(urlFunction, urlFunction.replace(resourceURL, new URL(resourceURL, baseURI).href));
+				} else {
+					if (resourceURL.startsWith(DATA_URI_PREFIX)) {
+						if (resourceURL.includes("<")) {
+							const escapedResourceURL = resourceURL.replace(/&/g, "&amp;").replace(/\u00a0/g, "&nbsp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
+							stylesheetContent = stylesheetContent.replace(resourceURL, escapedResourceURL);
+						}
+					}
 				}
 			});
 			return stylesheetContent;
@@ -807,7 +814,11 @@ this.SingleFileCore = this.SingleFileCore || (() => {
 
 	class DomUtil {
 		static normalizeURL(url) {
-			return url.split("#")[0];
+			if (url.startsWith(DATA_URI_PREFIX)) {
+				return url;
+			} else {
+				return url.split("#")[0];
+			}
 		}
 
 		static getUrlFunctions(stylesheetContent) {