Extensão Cromada: StorageArea.Definir a chave a passar como texto

Boa noite. Estou a tentar salvar uma matriz associativa no chrome.armazenamento.local, Assim:

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

para verificar se os dados foram gravados correctamente, carrego:

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

o registo mostra que está a tentar carregar o nome correcto da chave, mas não aparece nada. Eu então tento chamar loadData (null), que irá mostrar todo o conteúdo do armazenamento local, e eu encontro:

Object {keyName: Array[3]}
  keyName: Array[3]
  __proto__: Object
Os meus dados! Mas a chave que salvou é " keyName "em vez de"nome". O tronco de saveData saídas que é "salvar com chave 'nome'", mas é salvar com chave" keyName " em vez disso...

????

Obrigado!

Author: ZAR, 2014-04-10

1 answers

Que estranho...

Parece que a minha pergunta é semelhante a Usando uma chave variável no cromo.armazenamento.local.set

A resposta que encontraram foi converter o JSON {keyName: data} para um objecto:

var obj = {};
obj[keyName] = data;
chrome.storage.local.set(obj);
Isto funciona. Isto é porque o campo JSON passa automaticamente como uma corda?
 3
Author: ZAR, 2017-05-23 11:45:26