执行chrome.extension.getBackgroundPage()时抛出错误

时间:2012-02-06 19:13:44

标签: google-chrome-extension

我正在处理我的第一个扩展,并且我正在尝试创建一个简单的扩展来在页面上注入一个可拖动的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与扩展流程进行通信。

希望尽管我对其中一些概念一无所知,但我已经很清楚了。

2 个答案:

答案 0 :(得分:3)

我不认为文档明确表示您不能使用chrome.extension.getBackgroundPage()中的content_script,而是因为content_script的权限更适合于在其上运行的页面不允许访问。但是,您可以使用docs do mention几种方法。

  

与其他chrome。* API不同,chrome.extension的一部分可以由内容脚本使用:

您必须使用message passingbackground_pagecontent_script之间进行通信。

答案 1 :(得分:2)

您必须使用 background.html 中的 chrome.cookies.get(),然后在之间执行通信 >内容脚本 background.html ,用于交换Cookie数据。