Jelajahi Sumber

改进 `getSearch` 函数实现 (#7089)

* :art: 改进 `getSearch` 方法

兼容 key 为空字符串与 value 为空字符串的 URL search params

* :art: 改进 `getSearch` 方法

* :art: style
颖逸 2 tahun lalu
induk
melakukan
67743b50ba

+ 2 - 2
app/src/layout/util.ts

@@ -300,9 +300,9 @@ export const JSONToLayout = (isStart: boolean) => {
     }
     // https://github.com/siyuan-note/siyuan/pull/7086
     const openId = getSearch("id", window.location.href);
-    if (openId) {
+    if (openId !== null) {
         openFileById({
-            id: getSearch("id", window.location.href),
+            id: openId,
             action: [Constants.CB_GET_FOCUS, Constants.CB_GET_CONTEXT],
             zoomIn: getSearch("focus", window.location.href) === "1"
         });

+ 2 - 2
app/src/mobile/util/initFramework.ts

@@ -129,8 +129,8 @@ export const initFramework = () => {
     initEditorName();
     if (getOpenNotebookCount() > 0) {
         const openId = getSearch("id", window.location.href);
-        if (openId) {
-            openMobileFileById(getSearch("id", window.location.href),
+        if (openId !== null) {
+            openMobileFileById(openId,
                 getSearch("focus", window.location.href) === "1" ? [Constants.CB_GET_ALL, Constants.CB_GET_FOCUS] : [Constants.CB_GET_FOCUS, Constants.CB_GET_CONTEXT]);
         } else {
             const localDoc = window.siyuan.storage[Constants.LOCAL_DOCINFO];

+ 1 - 1
app/src/protyle/wysiwyg/index.ts

@@ -1578,7 +1578,7 @@ export class WYSIWYG {
                             openBy(linkAddress, "app");
                         } else {
                             const page = getSearch("page", linkAddress);
-                            openAsset(linkPathname, page === "" ? undefined : parseInt(page), "right");
+                            openAsset(linkPathname, page === null ? undefined : parseInt(page), "right");
                         }
                     } else {
                         /// #if !BROWSER

+ 4 - 14
app/src/util/functions.ts

@@ -14,20 +14,10 @@ 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) => {
+    // REF https://developer.mozilla.org/zh-CN/docs/Web/API/URLSearchParams
+    const urlSearchParams = new URLSearchParams(link);
+    return urlSearchParams.get(key);
 };
 
 export const isBrowser = () => {