Javascript Chrome扩展:Chrome.storage不';我不能保存任何东西

Javascript Chrome扩展:Chrome.storage不';我不能保存任何东西,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我准备写一个扩展来计算我的在线时间。 manifest.json文件中的权限: "permissions": [ "tabs", "<all_urls>", "storage", "cookies" ], log(值)只给我一个“[]”;开发者工具在Resources->Local Storage中没有显示任何内容,在控制台中也没有显示错误 我做错了什么 谢谢 我做错了什么 有几件事 首先,您误用了JavaScript数组。您的第一个值,如果您将其记录到控制台,则为[](尽管它仍

我准备写一个扩展来计算我的在线时间。 manifest.json文件中的权限:

"permissions": [
"tabs",
"<all_urls>",
"storage",
 "cookies"
],
log(值)只给我一个“[]”;开发者工具在Resources->Local Storage中没有显示任何内容,在控制台中也没有显示错误

我做错了什么

谢谢

我做错了什么

有几件事

首先,您误用了JavaScript数组。您的
第一个值
,如果您将其记录到控制台,则为
[]
(尽管它仍然保存数据)。您需要一个对象具有命名键,数组由数字索引

其次,如果我试图运行该代码,我会遇到一个事实,即
JSON.parse(未定义)
是一个例外(因为它不是有效的JSON)。因此,您需要检查这一点,或者更好的是,在执行
JSON.parse
时执行异常处理

但更好的做法是不要自己尝试序列化,因为
chrome.storage
文档告诉您这是自动完成的。与
localStorage
不同,您可以存储和检索对象

因此,您的代码应该如下所示:

//first extension startup values
var firstValues = { tag : 0, gesamt : 0 }; // Nothing wrong with literals

chrome.storage.local.get('values', function (result) {
    if(result.values) { // defined
        console.log(result.values);
    } else { // uninitialised
        chrome.storage.local.set({values: firstValues});
    }
});
最后,查看参考资料>本地存储不会显示
chrome.Storage
的内容,而是显示
localStorage
。据我所知,
chrome.storage
不在DevTools中表示

为了方便起见,这里有一个用于
chrome.storage
的记录器:

function logStorage() {
    if(chrome.storage) {
        chrome.storage.local.get(function(data){
            console.log("chrome.storage.local:");
            if(chrome.runtime.lastError) {
                console.error(chrome.runtime.lastError);
            } else {
                console.log(data);
            }
            chrome.storage.sync.get(function(data){
                console.log("chrome.storage.sync:");
                if(chrome.runtime.lastError) {
                    console.error(chrome.runtime.lastError);
                } else {
                    console.log(data);
                }
            });
        });
    } else {
        console.warn("chrome.storage is not accessible, check permissions");
    }
}

我在后台控制台中发现错误。上面写着:SyntaxError:意外的标记u在。。。问题是result.values未定义。看见
function logStorage() {
    if(chrome.storage) {
        chrome.storage.local.get(function(data){
            console.log("chrome.storage.local:");
            if(chrome.runtime.lastError) {
                console.error(chrome.runtime.lastError);
            } else {
                console.log(data);
            }
            chrome.storage.sync.get(function(data){
                console.log("chrome.storage.sync:");
                if(chrome.runtime.lastError) {
                    console.error(chrome.runtime.lastError);
                } else {
                    console.log(data);
                }
            });
        });
    } else {
        console.warn("chrome.storage is not accessible, check permissions");
    }
}