使用chrome.storage.sync中的键



作为JS和扩展的新手,这可能是一个新手错误。

我正在使用同步存储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");
    }
});    

但这会引发错误,因为它无法将键识别为字符串。我确实尝试过直接使用"chromeext_form_26"+tabid作为键,它将对象映射到"键"it self。

关于chrome.storage.sync.get(null, function (data) { console.info(data) });的打字我可以看到映射为Object { key: "efg"}

您想动态生成密钥,不是吗?

var key后添加对象密钥对定义:

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

请注意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");
    }
});

因为chrome扩展是特定于浏览器的,所以您可以使用ES6功能,而不必担心兼容性。ES6添加了计算的属性名称,允许您直接在对象声明中计算属性名称,如下所示:

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

最新更新