From 30a5cdc9f589b6b24bf560822b1cca82667d1404 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A2=96=E9=80=B8?= <49649786+Zuoqiu-Yingyi@users.noreply.github.com> Date: Thu, 19 Jan 2023 20:46:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9B=20getSearch=20=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E5=AE=9E=E7=8E=B0=20(#7094)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * :art: 改进 `getSearch` 方法 兼容 key 为空字符串与 value 为空字符串的 URL search params * :art: 改进 `getSearch` 方法 * :art: style * :art: 改进 `getSearch` 方法 兼容 `getSearch("page", "assets/第13章 编程陷阱-20220524015630-wd53jod.pdf?page=12")` REF: #7089 * :art: 改进 `getSearch` 方法 * `getSearch` 返回值兼容 `null` 与 `""` --- app/src/util/functions.ts | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/app/src/util/functions.ts b/app/src/util/functions.ts index c93031ca3..d4e05d69c 100644 --- a/app/src/util/functions.ts +++ b/app/src/util/functions.ts @@ -14,20 +14,13 @@ export const getRandom = (min: number, max: number) => { return Math.floor(Math.random() * (max - min + 1)) + min; //含最大值,含最小值 }; -export const getSearch = (key: string, link = window.location.search) => { - if (link.indexOf("?") === -1) { - return ""; - } - let value = ""; - const data = link.split("?")[1].split("&"); - data.find(item => { - const keyValue = item.split("="); - if (keyValue[0] === key) { - value = keyValue[1]; - return true; - } - }); - return value; +export const getSearch: (key: string, link?: string) => string | null = (key: string, link = window.location.search) => { + const params = link.substring(link.indexOf('?')); + const hashIndex = params.indexOf('#'); + const searchParams = params.substring(0, hashIndex >= 0 ? hashIndex : undefined); + // REF https://developer.mozilla.org/zh-CN/docs/Web/API/URLSearchParams + const urlSearchParams = new URLSearchParams(searchParams); + return urlSearchParams.get(key); }; export const isBrowser = () => {