在制表符之间来回切换后,chrome.storage似乎丢失了状态

时间:2019-06-03 09:12:56

标签: javascript google-chrome-extension

背景

我目前正在构建一个chrome扩展程序,用于收集活动标签的cookie并将其作为JSON字符串(popup.html)存储在chrome.storage.local中,然后再重定向到其他弹出窗口(cookie_popup.html)。然后,使用存储的cookie来填充表格以显示内容。只要我不在浏览器选项卡之间切换,此方法就可以正常工作,我可以根据需要随意打开和关闭弹出窗口(cookie_popup.html),同时获得所需的效果。

问题

当我导航到另一个选项卡时,不再填充该表,而chrome.storage.local仅返回一个空对象。 chrome.storage.local似乎已清除,但仅 用于存储的cookie,不是我存储的其他任何状态。我希望有人能帮助我理解原因。

我尝试过的事情

我尝试将chrome.storage.local更改为chrome.storage.sync,没有任何更改。我还确保加载新标签时不会意外设置cookie。

代码

用于设置存储中cookie的tabHandler(popup.html-仅在按下按钮时调用)。


    chrome.tabs.query({active: true, currentWindow: true}, tabHandler);

    function tabHandler(tabs) {
        chrome.cookies.getAll({url: tabs[0].url}, function(cookies) {
            chrome.storage.local.set({cookiejar: JSON.stringify(cookies)});
        });
    }

填充cookie表(cookie_popup.html)。


    chrome.storage.local.get('cookiejar', function(value) {

        try {
            let jar = JSON.parse(value.cookiejar);
            // ... Snipped ...
        } catch (e) {
            console.error(e);
            warningAlert.style = 'display: block;';
            warningAlert.innerText = 'Could not parse cookies; Please restart process.';
        }
    });

每当打开其他选项卡并打开扩展弹出窗口时,JSON解析都会失败,因为value.cookiejar是一个空对象。

0 个答案:

没有答案