2016-04-09 2 views
0

Будучи новым для JS и расширений, это может быть ошибка новобранец.Использование ключа в chrome.storage.sync

Я использую синхронизацию API хранения

var key = "chromeext_form_26" + tabid ; 

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

Но это бросает ошибку, поскольку он не распознает ключ, как string.I сделал попробовать непосредственно с помощью «chromeext_form_26» + табетического в качестве ключа он отображает объект " ключ ".

Напечатано chrome.storage.sync.get(null, function (data) { console.info(data) }); Я вижу изображение как Object { key: "efg"}.

ответ

1

Вы хотите сделать ключ динамически, не так ли?

После var key добавить определение объекта KeyPair:

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

Спасибо .. это действительно работало –

0

Обратите внимание, первые парами из StorageArea.set является объектом, так что вы должны использовать : вместо ,.

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

Поскольку хромовые расширения являются специфичными для браузера, вы можете использовать функции ES6, не беспокоясь о совместимости. ES6 добавляет вычисленные имена свойств, которые позволяют вычислять имена свойств непосредственно в объявлении объекта следующим образом:

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