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! 1
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