我正在使用本地存储进行Chrome扩展程序。当我使用
设置本地存储时localStorage['tracking'] = false;
...然后使用以下方法检查本地存储集:
if(localStorage['tracking'])
{
alert('set');
} else {
alert('Not Set');
localStorage['tracking'] = true;
}
工作正常。如果未设置并保持设置,它会将跟踪设置为true。但是,如果我转到一个新选项卡,并转到另一个选项卡中的同一页面,它将返回未设置状态。
即使在浏览器关闭后,本地存储还有什么办法可以保持持久性吗?
编辑:如果脚本,我没有将localStorage数组元素设置在顶部。刚刚意识到可能会让读者感到困惑。
答案 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;
}
});