chrome.storage.local.get一个对象并迭代obj键

时间:2017-04-22 14:27:03

标签: javascript google-chrome google-chrome-extension

我在使用chrome.storage.local.get功能时遇到问题。我已经全部工作了,除了我不懂如何处理.get函数。 我想通过单击按钮从一个chrome选项卡复制另一个对象来复制对象。我有一个循环来获取我的对象键,我可以通过以下方式将它成功保存在chrome本地存储中:

chrome.storage.local.set({
    'copiedObj': obj
});

但是,在尝试使用.get功能时,我无法指定所需的键数字。我需要密钥编号,因为密钥及其值每次都会更改,因为我正在从不同的页面复制数据。

$('#targetInfo').click(function(){
   console.log('context 2 received');

    var storage = chrome.storage.local.get('copiedObj', function (items) {
    console.log(items); 
    });

});

这会获取完整的对象键和值,但是当尝试更改它以获取第一个键(将脚本中的console.log更改为items [0]时,我在控制台中收到一个未定义的错误消息。 / p>

我希望它遍历所有键,并将键赋值给变量,赋值给变量并执行函数。对于每个按键的时间。我在代码中写了详细的解释:

//Get the DOM input field
var specific_name = document.getElementById('new_specific_name');
var specific_value = document.getElementById('new_specific_value');

//Start loop, from 0 to the last object keys
for (i=0;i<items.length;i++) {

    //Set specific_name value to the first key inside the object
    specific_name.value = XXX[i];

    //Set specific_value value to the matching key value inside the object
    specific_value.value = ZZZ[i];

    //Execute this function
    add_new_specific();
}

1 个答案:

答案 0 :(得分:0)

(最小解决方案,等待澄清)如前所述,

var storage = chrome.storage.local.get('copiedObj', function (items) {
    console.log(items); 
});

应该是

var storage = chrome.storage.local.get('copiedObj', function (result) {
    console.log(result.items);
    console.log(result.items[0]); // if items is an array...
});

要遍历对象,请参阅https://stackoverflow.com/a/18202926/1587329。您需要在.get中的内部匿名函数中执行此操作。