0

作为 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 作为键,它将对象映射到它自己的“键”。

在键入chrome.storage.sync.get(null, function (data) { console.info(data) }); 时,我可以看到映射为Object { key: "efg"}.

4

3 回答 3

2

你想动态地制作密钥,不是吗?

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

var pair={}; pair[key]=tab1Obj;
chrome.storage.sync.set(pair, function(){
于 2016-04-09T11:15:36.493 回答
0

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

chrome.storage.sync.set({ [key]: tab1Obj }, function() {
    // ...
});   
于 2016-04-10T07:53:18.683 回答
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");
    }
});
于 2016-04-10T02:07:01.390 回答