chrome.storage.local.get并设置

我试图在我的扩展中使用chrome.storage.local ,它似乎不工作。 我使用localStorage但意识到我不能在多个页面的内容脚本中使用它。

所以,这就是我所想到的:

 function save() { var channels = $("#channels").val(); var keywords = $("#keywords").val(); chrome.storage.local.set({'channels': channels}); chrome.storage.local.set({'keywords': keywords}); } 

我确实相信我正在执行save() ,但问题出现在load()

 function load() { var channels = ""; chrome.storage.local.get('channels', function(result){ channels = result; alert(result); }); var keywords = ""; chrome.storage.local.get('keywords', function(result){ keywords = result; alert(result); }); $("#channels").val(channels); $("#keywords").val(keywords); } 

警报触发时,会打印出[object Object] 。 这是为什么? 我究竟做错了什么? 我查看了文档/示例,但似乎无法查明问题所在。

这段代码适用于我:

 function load() { var channels = ""; var keywords = ""; chrome.storage.local.get('channels', function (result) { channels = result.channels; alert(result.channels); $("#channels").val(channels); }); } 

Chrome.storage.local.get()返回一个包含键值映射项的对象,因此您必须在search模式中使用键索引。

IMP:

感谢Rob鉴定: Chrome.storage.local.get()是asynchronous的 ,你应该修改你的代码,以确保它们在callback()成功后工作。

如果您需要更多信息,请与我们联系。

debugging或使用

 alert(JSON.stringify(result)); 

了解更多关于你回来的细节

您正在使用的“结果”值是一个包含存储值的对象,要获取必须使用的值result.keywords ,将获得关键字的值。 EX:

 function load(){ chrome.storage.local.get('keywords', function(result){ var keywords = result.keywords; alert(keywords); }); chrome.storage.local.get('channels', function(result){ var channels = result.channels; alert(channels); }); }