jihuaqiang 2 yıl önce
ebeveyn
işleme
f5d710a22e
1 değiştirilmiş dosya ile 32 ekleme ve 17 silme
  1. 32 17
      src/uilts/chromeExtension.js

+ 32 - 17
src/uilts/chromeExtension.js

@@ -30,27 +30,42 @@ export function setChromeStorage(params, callback) {
     }
 }
 
+export function getSessionStorge(key) {
+    const value = sessionStorage.getItem(key);
+    return value && JSON.parse(value);
+}
+
+export function setSessionStorge(key, value) {
+    return sessionStorage.setItem(key, JSON.stringify(value));
+}
+
 export async function getChromeStorageFromExtension(key = '') {
     let params = {}
     params[key] = ''
-    return new Promise((res, rej) => {
-        messageCenter.send({
-            actionType: MESSAGE_ENUM.IFRAME_GET_EXTENSION_STORGE_DATA,
-            data: {
-                iframeID,//用于告诉父窗口会传消息给哪个iframe
-                key,// storage key
-                messageID: guid(), // 唯一的ID,用于标记回调函数
-                overTime: 50
-            },
-            callback: (data) => {
-                res(data)
-            },
-            failback: (e) => {
-                rej(e)
-            }
+    const value = getSessionStorge(key);
+    if (value) {
+        return Promise.resolve(value);
+    } else { 
+        return new Promise((res, rej) => {
+            messageCenter.send({
+                actionType: MESSAGE_ENUM.IFRAME_GET_EXTENSION_STORGE_DATA,
+                data: {
+                    iframeID,//用于告诉父窗口会传消息给哪个iframe
+                    key,// storage key
+                    messageID: guid(), // 唯一的ID,用于标记回调函数
+                    overTime: 50
+                },
+                callback: (data) => {
+                    setSessionStorge(key, data);
+                    res(data);
+                },
+                failback: (e) => {
+                    setSessionStorge(key, {});
+                    rej(e)
+                }
+            })
         })
-    })
-
+    }
     // console.log(window.parent.window.atest)
     // window.postMessage({actionType: 'iframe_test', data: key})
 }