chrome.storage.local.get 并设置 [重复]
Posted
技术标签:
【中文标题】chrome.storage.local.get 并设置 [重复]【英文标题】:chrome.storage.local.get and set [duplicate] 【发布时间】:2012-12-02 02:12:52 【问题描述】:我正在尝试在我的扩展程序中使用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]
。这是为什么?我究竟做错了什么?我查看了文档/示例,但似乎无法确定问题所在。
【问题讨论】:
【参考方案1】:此代码适用于我:
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() 成功后工作。
如果您需要更多信息,请告诉我。
【讨论】:
单个代码块能否用于返回所有键? 最好在回调函数中声明变量而不是全局声明它们。只是说:)【参考方案2】:调试或使用
alert(JSON.stringify(result));
有关您将获得什么的更多详细信息
【讨论】:
console.dir(result);也会这样做。【参考方案3】:您使用的“结果”值是一个包含存储值的对象,要获取您必须使用的值result.keywords
,它将获取关键字的值。例如:
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);
);
【讨论】:
不处理代码后面使用keywords
的主要问题,但在回调运行之前。以上是关于chrome.storage.local.get 并设置 [重复]的主要内容,如果未能解决你的问题,请参考以下文章