【发布时间】:2013-01-17 10:42:36
【问题描述】:
我将以下代码添加到我原本可以正常工作的 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]
换句话说,bookmarks 工作正常,但 storage 在操作中丢失。我的清单已要求两者……
{
...
"permissions": [ "bookmarks", "tabs", "storage" ],
}
以防万一,此扩展程序作为外部扩展程序安装在 Mac OS X 上。为了确保它已正确更新,我将上面的代码从安装到 ~/Library/Application Support/Google/Chrome/ 的文件中复制了默认/扩展。当然,我已经重新启动了 Chrome。
为什么 chrome.storage 可能未定义?
【问题讨论】:
-
您需要使用消息传递。您在 Chrome 扩展程序中设置的 localstorage 变量是扩展程序私有的。 developer.chrome.com/extensions/messaging.html
-
chrome.storage需要 Chrome 20+,您应该升级您的浏览器吗? -
我正在使用 Chrome 26。我只是 Stack Overflow 上的 35 指针,所以我可能不太了解如何使用它,但我认为 Chris 的评论实际上是一个答案。我的意思是,它确实回答了我的问题。谢谢你,克里斯。
-
我进一步了解到 Chrome 中有两个“本地存储”API:(1) 常规 HTML5 localStorage,以及 (2) Chrome 专有的具有高级功能的 chrome.storage。当(1)足以完成我的任务时,我尝试使用(2)是错误的。使用 localStorage,不需要配置、权限或通过 hoops 跳转消息。它“正常工作”,例如: localStorage.myKey = "My Value" ; // 漂亮!