Chrome扩展程序:chrome.storage未定义

时间:2013-02-02 01:58:02

标签: google-chrome-extension

我将以下代码添加到我正在使用的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可能未定义?

2 个答案:

答案 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浏览器将解决问题。我希望它能节省一些人的时间;)