Asaf Kfir
Asaf Kfir

Reputation: 139

chrome.storage.local.get an object and iterating through obj keys

I'm having trouble using the chrome.storage.local.get feature. I have all working, except I don't understand how to handle the .get function. I want to copy an object by clicking a button, from one chrome tab to another one. I have a loop to get my Object keys, and I can save it successfuly in chrome local storage by:

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

but, when trying to use the .get function, I can't specify the key number I want. I need the key number because the keys and their values changes every time because i'm copying data from different pages.

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

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

});

this gets me the full object keys and values, but when trying to change it to get the first key (changing the console.log inside the script to items[0], I get an undefined error message in the console.

I want it to iterate through all the keys, and assign key to a variable, value to a variable and execute a function. For each key by it's time. I've written a detailed explanation inside the code:

//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();
}

Upvotes: 0

Views: 3130

Answers (1)

serv-inc
serv-inc

Reputation: 38157

(minimal solution, pending clarification) As mentioned before,

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

should be

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

To loop through an object, see https://stackoverflow.com/a/18202926/1587329. You need to do this all inside the anonymous function in .get.

Upvotes: 0

Related Questions