【发布时间】:2013-01-14 19:46:03
【问题描述】:
我想在我的扩展中保存信息。我使用Chrome.storage.sync 来做到这一点,但是当我在保存后立即阅读时,我无法正确检索该值。大概是在做傻事……
我尝试使用 chrome.storage.sync.clear 清除本地存储,但没有帮助。
我的保存功能是(看看Currently是怎么做到的):
save: function (type, key, data) {
Storage.storageOption(type).set({key:data}, function () {
console.log("saved data");
});
load: function (type, key) {
Storage.storageOption(type).get(key, function (object) {
console.log("read : " +object);
return object[key];
})}
并将其称为:
Storage.save("", 'path',username);
console.log(Storage.load("",'path'));
结果如下:
保存的数据
未定义
读取:[对象对象]
更新:
好的,显然我如何传递对象的键值对存在问题,因为当我这样调用它时:
chrome.storage.sync.set({'path':username}, function(){});
在控制台打印存储会产生更好的输出:
未定义
晒
仍然不确定这个未定义是什么......
更新 2:
成功写入存储后,在触发文档就绪时尝试读取它。 使用以下代码:
var dbdata = chrome.storage.sync.get("path",function(object){
return object['path'];
});
然而,函数的主体并没有被执行,尽管文档说它会在任何情况下运行,并且会在发生错误时设置 lastError。
有什么建议吗?
【问题讨论】:
-
从您传递给 chrome.storage.sync.get 的函数返回值不会达到您的预期。该值仅在回调中可用。它不会出现在 dbdata 中
-
就是这样!愚蠢的范围问题。我已经用这条评论更新了你的答案并标记了答案。谢谢。
-
使用 {key:data} 与 {'key':data} 相同。如果键是动态的,则需要创建一个对象: var values = {};值[键] = 数据;
标签: javascript google-chrome google-chrome-extension storage google-chrome-storage