我正在构建Chrome扩展程序,我正在尝试使用Chrome的功能来存储带有chrome.storage API的对象。我已经成功地设置了一个对象但是当我试图获得它时,我似乎无法做到这一点。这可能不是chrome.storage的问题,更多的是我从JSON对象获取数据的经验不足。
以下是我用于在存储中设置对象的代码。
var ids = { "a":1234, "b":5678 };
var obj= {};
var key = "MyChromeKey";
obj[key] = ids;
chrome.storage.sync.set(obj);
当我使用.get
时,对象就像我期望的那样出现在我的控制台中。但我不能为我的生活弄清楚如何从中获取a
的价值。
chrome.storage.sync.get(key,function(result){
console.log(key,result); // MyChromeKey > Object {MyChromeKey: Object}
console.log(result["a"]); // undefined
console.log(key,result["a"]); // MyChromeKey undefined
});
非常感谢任何帮助。
答案 0 :(得分:1)
Chrome的存储API将返回一个对象,其形式为{" yourKeyName" :Object},因此要访问该对象内的值,您必须首先浏览" yourKeyName"级别然后访问底层对象。编辑:它以这种格式返回它的原因是因为"你可以给出一个键数组,并返回一个带有所有这些键的值的对象。" (感谢SO用户Barmar!)
result["MyChromeKey"]["a"]
适用于您的代码。
答案 1 :(得分:0)
callback
函数的结果参数是标准Javascript
对象。
如果您只想将其注销到控制台,请在callback
功能中尝试以下操作:
console.log(result[key]);