关于chrome扩展本地存储的说明

时间:2016-04-29 03:07:23

标签: javascript google-chrome google-chrome-extension local-storage

我正在编写一个应用程序,首先将图形的一些空白启动数据实例化到chrome.storage中,因为正在使用扩展程序更新数据。

我现在格式化代码的方式是在代码启动时实例化存储,这是一个问题,因为代码在重新启动chrome时重新开始,因此它会覆盖已写入的所有数据。

所以我我需要写一些检查功能,我可以写一些像

这样的东西
chrome.storage.sync.get("data", function (result){
    if ("data" !== null){
        initStorage();
    } else {
        //do stuff
    }
})

这是解决此问题的正确方法吗? 我想知道这是否适用于存储功能如何?每个扩展程序是否都有自己的存储区域,因此如果我还没有保存任何内容,那么它将没有任何内容?

2 个答案:

答案 0 :(得分:3)

请注意,您可以在get中提供默认值:

var default_data = { /* something */ };
chrome.storage.sync.get({data: default_data}, function(result) {
    // If "data" wasn't present in storage, result.data is a copy of default_data
    // Otherwise, result.data is a copy of the actual stored value
    chrome.storage.sync.set(result); // To save the default, if not saved
});

答案 1 :(得分:1)

由于您可以从存储中检索多个值,因此result是一个包含您请求的密钥的对象。检查该对象中是否存在“数据”:

chrome.storage.sync.get("data", function(result) {
    if (!("data" in result)) {
        initStorage();
    }
    // Do stuff
});