根据Chrome存储上的文档:
https://developer.chrome.com/extensions/storage
这是在同步存储中设置和获取键值对的正确方法:
chrome.storage.sync.set({key: value}, function() { console.log('Value is set to ' + value); }); chrome.storage.sync.get(['key'], function(result) { console.log('Value currently is ' + result.key); });
我已经为我的代码复制了这种语法,但是result.key总是以未定义结尾,而不是返回我指定的键的值。
我正在从上下文菜单中收集键值对的数据,并且可以正常工作。 set操作中的日志显示了正确的数据,因此我假设set本身也正常工作(但是这可能是一个错误的假设吗?)。
对于get操作,我已将变量暂时强制为“ data1”,这仅仅是因为我可以在上下文菜单中选择一个一致的字符串来进行测试。但是,当我尝试检索与该键关联的值时,却无法定义。
let repUserSelected = item.selectionText;
let bColor = item.menuItemId;
chrome.storage.sync.set({repUserSelected: bColor}, function() {
console.log(repUserSelected + ' is set to ' + bColor);
});
//test - data1 should be a variable in the final code
let repUserTest = 'data1';
chrome.storage.sync.get(['repUserTest'], function(result) {
console.log('Color for ' + repUserTest + ' currently is ' + result.repUserTest);
});
});
这是我得到的控制台输出:
data1 is set to #ff786f background.js:33
Color for data1 currently is undefined background.js:38
data2 is set to #a0ffbd background.js:33
Color for data1 currently is undefined background.js:38
我试图删除repUserTest中的引号,因为我不希望将其作为get中的实际字符串求值,但这并没有改变。我觉得这不是需要回调的异步问题,因为即使执行了后续设置,问题仍然存在。但是肯定有些事情我对这里发生的事情不了解,所以我们将不胜感激。