本地存储是否持久存在?

我正在使用Local Storage进行Chrome扩展。 当我使用设置本地存储时

localStorage['tracking'] = false; 

…然后使用以下命令检查本地存储集:

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

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

即使在浏览器关闭后,本地存储是否有任何方法可以保持持久性?

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

尝试:

 localStorage.setItem('tracking', false); 

 localStorage.getItem('tracking'); 

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

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

LocalStorage仅适用于字符串。 检查这个解释。

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

我的情况是我在内容脚本中有这个代码(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; } });