如何获取我在chrome.storage?

时间:2016-12-08 21:31:32

标签: javascript google-chrome

我正在构建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
  });

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

Chrome的存储API将返回一个对象,其形式为{" yourKeyName" :Object},因此要访问该对象内的值,您必须首先浏览" yourKeyName"级别然后访问底层对象。编辑:它以这种格式返回它的原因是因为"你可以给出一个键数组,并返回一个带有所有这些键的值的对象。" (感谢SO用户Barmar!)

result["MyChromeKey"]["a"]适用于您的代码。

答案 1 :(得分:0)

callback函数的结果参数是标准Javascript对象。

如果您只想将其注销到控制台,请在callback功能中尝试以下操作:

console.log(result[key]);