0

我在选项页面设置了一些值。现在工作正常。但我无法访问在 background.html 或内容脚本中设置的数据。我已经读过消息可以通过消息传递这样的事情,但对我来说,文档有点难以理解。如果有人能指出我正确的方向,那就太好了。示例故事>我在选项页面上设置此值localStorage.setItem("somedata" , "true"); 然后,如果我要在将要运行扩展程序的页面上访问相同的数据,我会得到这样的结果:

localStorage.getItem("somedata");

并且值为null

4

1 回答 1

0

内容脚本无法直接从后台页面读取 localStorage 值。如果您想阅读 localStorage 键值对,请参阅此答案,其中提供了解释和实现此目的的代码:Accessing global object from content script in chrome extension

虽然前面的方法有效,但我推荐使用chrome.storageAPI:所有扩展页面都可以使用它。localStorage和之间的一个巨大区别在于chrome.storagechrome.storage是一个异步API。

这是一个说明差异的示例:

// synchronous localStorage
localStorage.setItem('keyname', 'value');
alert(localStorage.getItem('keyname'));

// asynchronous chrome.storage
chrome.storage.local.set({keyname: 'value'}, function() {
    chrome.storage.local.get('keyname', function(items) {
        alert(items.keyname);
    });
});

乍一看,chrome.storageAPI 看起来更加复杂。但是,如果您想在扩展中保存数据,这是最好的方法。该localStorage方法需要更多代码(请参阅我在此答案之上链接的答案)来实现相同的功能。而且,它也是异步的。

于 2012-10-13T21:06:25.773 回答