本地存储是否持久存在?

时间:2011-11-20 09:35:29

标签: javascript jquery html5 local-storage

我正在使用本地存储进行Chrome扩展程序。当我使用

设置本地存储时
localStorage['tracking'] = false;

...然后使用以下方法检查本地存储集:

if(localStorage['tracking'])
{
    alert('set');
} else {
    alert('Not Set');
    localStorage['tracking'] = true;
}

工作正常。如果未设置并保持设置,它会将跟踪设置为true。但是,如果我转到一个新选项卡,并转到另一个选项卡中的同一页面,它将返回未设置状态。

即使在浏览器关闭后,本地存储还有什么办法可以保持持久性吗?

编辑:如果脚本,我没有将localStorage数组元素设置在顶部。刚刚意识到可能会让读者感到困惑。

3 个答案:

答案 0 :(得分:1)

尝试:

localStorage.setItem('tracking', false);

localStorage.getItem('tracking');

这些是W3C API Specification中使用的方法。

由于未指定您使用的用法,因此根据浏览器实现,您可能会向当前localStorage对象中的window全局变量添加新属性,这些变量在导航时变得不可用从页面。

答案 1 :(得分:0)

LocalStorage仅适用于字符串。查看this说明。

答案 2 :(得分:0)

我曾经遇到过同样的问题。我想分享我的解决方案。但是,我的情况可能与您的情况不同。

我的情况是我在内容脚本中有这个代码(localStrage ['xxxx'] ='xxx';)。然后我在打开新选项卡或打开新窗口时遇到问题。

所以,我的解决方案是我没有直接通过内容脚本运行此代码。内容脚本将调用'chrome.extension.sendRequest',background.html将执行set / read localStrage并返回内容脚本。

这将是内容脚本中的代码

chrome.extension.sendRequest({action: 'load'}, function (response) {
            if(response){
                  alert('set');
            } else {
                  alert('Not Set');
                  chrome.extension.sendRequest({action: 'set',value:'true'}, function (response) {});
            }
}

这将是background.html中的代码。

chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
    if (request.action == 'load') {
        sendResponse(localStorage['tracking']);

            }else if (request.action == 'set') {
                localStorage['tracking']=request.value;
            }
     });