Jer*_*ock 6 google-chrome-extension
我将以下代码添加到我原本可以正常工作的 Google Chrome 扩展程序中……
var storage = chrome.storage ;
console.log("storage is " + storage) ;
var bookmarks = chrome.bookmarks ;
console.log("bookmarks is " + bookmarks) ;
Run Code Online (Sandbox Code Playgroud)
运行后,控制台说
storage is undefined
bookmarks is [object Object]
Run Code Online (Sandbox Code Playgroud)
换句话说,书签可以正常工作,但在操作中缺少存储。我的清单同时要求...
{
...
"permissions": [ "bookmarks", "tabs", "storage" ],
}
Run Code Online (Sandbox Code Playgroud)
以防万一,此扩展程序在 Mac OS X 上作为外部扩展程序安装。为确保正确更新,我将上述代码从安装到 ~/Library/Application Support/Google/Chrome/Default/Extensions 的文件中复制. 当然,我已经重新启动了 Chrome。
为什么 chrome.storage 可能未定义?
编辑:下面的答案写于 2013 年。现在是 2021 年,正如 Irfan 在评论中写道:
chrome.storage 也可以从内容脚本中获得。您的扩展程序的内容脚本可以直接访问用户数据,无需后台页面。https://developer.chrome.com/docs/extensions/reference/storage/
原答案:
LocalStorage 仅在后台页面和弹出窗口中可用。如果您需要访问某些数据,则需要将消息从当前页面传递到后台页面。这是代码:
在您当前的页面中:
chrome.extension.sendMessage({action:"getstorage"}, function(response){
console.log("storage is " + response.myVar);
});
Run Code Online (Sandbox Code Playgroud)
在后台页面:
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
if (request.action == "focusWindow"){
sendResponse({myVar: localStorage.myStorage});
}
});
Run Code Online (Sandbox Code Playgroud)
您可以在有关消息传递的chrome 文档中找到更多示例
| 归档时间: |
|
| 查看次数: |
3866 次 |
| 最近记录: |