我正在尝试使用chrome.storage将对象存储在包含其他对象的chrome扩展中 - 但是在初始化它并使用chrome.storage.sync.get正确获取它时遇到了问题。我明白我应该以chrome.storage.sync.get(key: "value", function(obj) {}
的形式获得对象 - 问题是我不知道如何
我有以下代码来创建对象并添加我需要的数据。
allData = {};
currentData = {some: "data", goes: "here"};
allData[Object.keys(allData).length] = currentData;
这将正确地给我一个对象,它的第一个键(0)设置为currentData。 (Object: {0: {some: "data", goes: "here"}})
按照预期工作,allData[Object.keys(allData).length] = currentData;
将适当地将当时的currentData推送到我的Object中。
但是如何将其永久存储在chrome.storage中呢? chrome.storage.sync.get("allData", function(datas) {})
无法创建一个空的allData变量,allData: {}
,allData = {}
以及返回undefined
或其他错误的各种不同的东西也是如此。如何正确初始化空对象并将其存储在chrome.storage中?或者我是否会将这一切都弄错,需要将其分解为关联数组以使其工作?
我基本上需要使用chrome.storage永久存储上面的小块工作代码,以便我可以根据需要使用它。
您首先需要在存储中设置数据:
allData = {};
currentData = {some: "data", goes: "here"};
// to initialize the all data using the storage
chrome.storage.sync.get('allData', function(data) {
// check if data exists.
if (data) {
allData = data;
} else {
allData[Object.keys(allData).length] = currentData;
}
});
// Save it using the Chrome extension storage API.
chrome.storage.sync.set({'allData': allData}, function() {
// Notify that we saved.
message('Settings saved');
});
之后,您应该能够使用chrome.storage.sync.get('allData', function(){ ... })
界面访问数据。
您可以使用新的JavaScript(ECMAScript 6)轻松完成此操作,查看Enhanced Object Properties:
var currentData = {some: "data", goes: "here"};
chrome.storage.local.set({allData: currentData });
以旧的方式,是这样的:
var obj = {};
var key = "auth";
obj[key] += "auth";
obj[key] = JSON.stringify({someKey: someValue});