我正在尝试在我的扩展程序中使用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]
。这是为什么?我究竟做错了什么?我查看了文档/示例,但我似乎无法确定问题所在。
答案 0 :(得分:62)
此代码适用于我:
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()返回一个带有键值映射项的对象,因此您必须在搜索模式中使用键的索引。
感谢Rob识别:Chrome.storage.local.get()是asynchronous,您应修改代码以确保它们在callback()成功后才能正常工作。
如果您需要更多信息,请与我们联系。
答案 1 :(得分:7)
调试或使用
alert(JSON.stringify(result));
了解更多详情
答案 2 :(得分:1)
"结果"您正在使用的值是一个包含存储值的对象,以获取您必须使用的值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);
});
}