我将以下代码添加到我正在使用的Google Chrome扩展程序中......
var storage = chrome.storage ;
console.log("storage is " + storage) ;
var bookmarks = chrome.bookmarks ;
console.log("bookmarks is " + bookmarks) ;
运行时,控制台说
storage is undefined
bookmarks is [object Object]
换句话说,书签正常,但存储在行动中缺失。我的清单要求两个......
{
...
"permissions": [ "bookmarks", "tabs", "storage" ],
}
如果重要,此扩展程序将作为外部扩展程序安装在Mac OS X上。为确保更新正确,我将上面的代码从安装到〜/ Library / Application Support / Google / Chrome /中的文件中复制默认/扩展。当然,我已经重新启动了Chrome。
为什么chrome.storage可能未定义?
答案 0 :(得分:3)
LocalStorage仅在后台页面和弹出窗口中可用。如果您需要访问某些数据,则需要将消息从当前页面传递到后台页面。这是代码:
在您当前的页面中:
chrome.extension.sendMessage({action:"getstorage"}, function(response){
console.log("storage is " + response.myVar);
});
在后台页面中:
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
if (request.action == "focusWindow"){
sendResponse({myVar: localStorage.myStorage});
}
});
您可以在Message Passing
上的chrome文档中找到更多示例答案 1 :(得分:2)
“扩展”选项卡上的扩展名内有“重新加载(Ctrl + R)”链接,单击它可以解决问题(我花了几个小时)。禁用/启用扩展也不会重新启动Chrome浏览器将解决问题。我希望它能节省一些人的时间;)