浏览代码

use URLSearchParams to extract search params (fix #957)

Gildas 3 年之前
父节点
当前提交
56cfc1347a
共有 2 个文件被更改,包括 5 次插入2 次删除
  1. 1 1
      src/single-file/single-file-core.js
  2. 4 1
      src/single-file/single-file-util.js

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

@@ -1600,7 +1600,7 @@ class ProcessorHelper {
 		template = await evalTemplateVariable(template, "url-port", () => url.port || "No port", dontReplaceSlash, options.filenameReplacementCharacter);
 		template = await evalTemplateVariable(template, "url-protocol", () => url.protocol || "No protocol", dontReplaceSlash, options.filenameReplacementCharacter);
 		template = await evalTemplateVariable(template, "url-search", () => url.search.substring(1) || "No search", dontReplaceSlash, options.filenameReplacementCharacter);
-		const params = url.search.substring(1).split("&").map(parameter => parameter.split("="));
+		const params = util.getSearchParams(url.search);
 		for (const [name, value] of params) {
 			template = await evalTemplateVariable(template, "url-search-" + name, () => value || "", dontReplaceSlash, options.filenameReplacementCharacter);
 		}

+ 4 - 1
src/single-file/single-file-util.js

@@ -21,7 +21,7 @@
  *   Source.
  */
 
-/* global globalThis */
+/* global globalThis, URLSearchParams */
 
 import * as vendor from "./vendor/index.js";
 import * as modules from "./modules/index.js";
@@ -62,6 +62,9 @@ function getInstance(utilOptions) {
 		resolveURL(resourceURL, baseURI) {
 			return this.parseURL(resourceURL, baseURI).href;
 		},
+		getSearchParams(searchParams) {
+			return Array.from(new URLSearchParams(searchParams));
+		},
 		getValidFilename(filename, replacedCharacters = DEFAULT_REPLACED_CHARACTERS, replacementCharacter = DEFAULT_REPLACEMENT_CHARACTER) {
 			replacedCharacters.forEach(replacedCharacter => filename = filename.replace(new RegExp("[" + replacedCharacter + "]+", "g"), replacementCharacter));
 			filename = filename