2016-04-09 22 views
0

JS ve uzantılarında yenileşmek, bu bir çaylak hatası olabilir. Ben senkronizasyon depolama API kullanıyorumAnahtarı chrome.storage.sync içinde kullanma

var key = "chromeext_form_26" + tabid ; 

chrome.storage.sync.set({ String(key), tab1Obj }, function() { 
    if (chrome.runtime.error) { 
     console.log("Runtime error.in setting"); 
    } 
});  

Ama bu " "chromeext_form_26" + tabid anahtar olarak o nesneyi eşleyen kullanarak string.I doğrudan çalıştım olarak anahtarınızı tanımıyor olarak hatayı atar anahtar "kendini".

Yazarak chrome.storage.sync.get(null, function (data) { console.info(data) }); Eşlemeyi Object { key: "efg"} olarak görebiliyorum.

cevap

1

Dinamik olarak anahtar yapmak istersiniz, değil mi? var key sonra

nesne anahtar çifti tanımını ekleyin: Eğer , yerine : kullanın; böylece

var pair={}; pair[key]=tab1Obj; 
chrome.storage.sync.set(pair, function(){ 
+0

Teşekkürler –

0

, StorageArea.set ilk param bir nesnedir unutmayınız.

var key = "chromeext_form_26" + tabid ; 

chrome.storage.sync.set({ String(key): tab1Obj }, function() { 
    if (chrome.runtime.error) { 
     console.log("Runtime error.in setting"); 
    } 
}); 
0

Chrome uzantıları tarayıcıya özel olduğundan, uyumluluk konusunda endişelenmenize gerek kalmadan ES6 özelliklerini kullanabilirsiniz. ES6, özellik adlarını doğrudan bu gibi nesne bildirimlerinde hesaplamanıza olanak tanıyan hesaplanmış özellik adlarını ekler:

chrome.storage.sync.set({ [key]: tab1Obj }, function() { 
    // ... 
});