Chrome扩展程序:StorageArea.Set键作为字符串传递

时间:2014-04-09 23:22:39

标签: javascript google-chrome-extension

晚上好,

我试图将关联数组保存到chrome.storage.local中,如下所示:

var keyName = 'name';
var data = //grabbed from an Ajax call
saveData(keyName, data);

function saveData(keyName, data){
  console.log("saving with key: "+keyName);
  chrome.storage.local.set({keyName:data});
}

要检查以确保正确保存数据,我加载:

function loadData(keyName){
  console.log("loading: "+keyName);
  chrome.storage.local.get(keyName, function(result){
      console.log(result);
  });
}

日志显示它正在尝试加载正确的密钥名称,但没有任何内容出现。然后我尝试调用loadData(null),它将显示本地存储的全部内容,我发现:

Object {keyName: Array[3]}
  keyName: Array[3]
  __proto__: Object

我的数据!但它保存的关键是" keyName"而不是" name"。来自saveData的日志输出它是"保存时使用键''",但是它使用键" keyName"进行保存。代替...

????

谢谢!

1 个答案:

答案 0 :(得分:3)

有多奇怪......

似乎我的问题类似于Using a variable key in chrome.storage.local.set

他们找到的答案是将JSON {keyName:data}转换为对象:

var obj = {};
obj[keyName] = data;
chrome.storage.local.set(obj);

这很有效。

这是因为JSON字段是否自动作为字符串传递?