我正在处理我的第一个扩展,并且我正在尝试创建一个简单的扩展来在页面上注入一个可拖动的div。这很好用,但我想在后台页面上保留div的位置(我也在尝试本地存储,但是想知道为什么这不起作用)。
我不需要按钮,所以没有创建一个popup.html文件,我相信它完全是可选的。到目前为止,它肯定只是注入了javascript文件。
但是,我现在在执行chrome.extension.getBackgroundPage()时抛出以下错误:
未捕获错误:chrome.extension.getBackgroundPage只能在扩展进程中使用。有关更多详细信息,请参阅内容脚本文档。
内容脚本文档似乎没有发现我的方法有任何问题:http://code.google.com/chrome/extensions/content_scripts.html
以下是我正在使用的编辑清单:
{
"name": "My helper",
"version": "1.0",
"description": "Tastes great",
"background_page": "background.html",
"content_scripts": [
{
"matches":["https://page.of.interest/*"],
"run_at":"document_idle",
"js":[ "jquery.js", "jquery-ui-1.8.17.custom.min.js", "my_content_script.js"],
"css": [ "my_content_script.css" ]
}
],
"permissions": [
"background"
]
}
所以我在“my_content_script.js”中运行此语句。这不是延伸过程的一部分吗?我可以只在popup.html(或其他可能的?)文件上运行吗?
如果是这种情况,那么可能更容易使用localstorage而不是尝试通过dom与扩展流程进行通信。
希望尽管我对其中一些概念一无所知,但我已经很清楚了。
答案 0 :(得分:3)
我不认为文档明确表示您不能使用chrome.extension.getBackgroundPage()
中的content_script
,而是因为content_script
的权限更适合于在其上运行的页面不允许访问。但是,您可以使用docs do mention几种方法。
与其他chrome。* API不同,chrome.extension的一部分可以由内容脚本使用:
您必须使用message passing在background_page
和content_script
之间进行通信。
答案 1 :(得分:2)
您必须使用 background.html 中的 chrome.cookies.get(),然后在之间执行通信 >内容脚本和 background.html ,用于交换Cookie数据。