Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome extension 在chrome.storage.sync中使用密钥_Google Chrome Extension_Google Chrome Storage - Fatal编程技术网

Google chrome extension 在chrome.storage.sync中使用密钥

Google chrome extension 在chrome.storage.sync中使用密钥,google-chrome-extension,google-chrome-storage,Google Chrome Extension,Google Chrome Storage,对于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"); } }); 但这会引发错误,因为它无法将

对于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,函数(数据){console.info(数据)})

我可以将映射视为
对象{key:“efg”}

您希望动态生成密钥,是吗

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

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

你想动态生成密钥,不是吗

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

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

请注意的第一个参数是对象,因此您应该使用
,而不是

var key = "chromeext_form_26" + tabid ;

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

请注意的第一个参数是对象,因此您应该使用
,而不是

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(){
// ...
});   

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

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