因此,我在 Google Chrome 上的本地存储方面遇到了一些障碍。根据我的研究,我的语法似乎是正确的,但由于某种原因该值没有被保存。这是我的代码:
chrome.storage.sync.get(accName, function(data) {
var accData = data[accName];
// Stuff
chrome.storage.sync.set({ accName: accData }, function() {
alert('Data saved');
});
});
每次我重新运行它时,data[accName]
返回未定义。我已经尝试使用相同的代码与sync.set参数的文字值(例如{ 'john32': ['fk35kd'] }
),这似乎有效,所以我真的很困惑问题可能是什么。任何帮助,将不胜感激。
问题是试图插入accName
进入 set 语句内的对象文字(归功于Rob https://stackoverflow.com/users/938089/rob-w多于)。我最终得到的是一个具有属性“accName”的对象,而不是值accName
本身。这是一个修复。
var obj = {};
obj[accName] = accData;
chrome.storage.sync.set(obj, function() {
alert('Data saved');
});
Update
ES6 现在允许对象字面量中的计算属性名称 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names,因此上述可以通过以下方式实现:
chrome.storage.sync.set({ [accName]: accData }, function() {
alert('Data saved');
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)