Javascript Chrome扩展:Chrome.storage不';我不能保存任何东西
我准备写一个扩展来计算我的在线时间。 manifest.json文件中的权限: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数组。您的第一个值,如果您将其记录到控制台,则为[](尽管它仍
"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");
}
}