如何在Chrome扩展程序的背景页面上执行脚本

时间:2013-02-27 00:51:18

标签: google-chrome-extension

我正在开发Chrome扩展程序。我的manifest.json是:

"page_action": {
    "default_icon": {
        "19": "icons/icon19.png",
        "38": "icons/icon38.jpg"
    },
    "default_popup": "options.html"
},

在我的扩展程序中,我正在尝试执行尝试在实际网页上运行/覆盖的脚本:

// in options.html
chrome.tabs.executescript(null,{code:"alert('hello!');"}) ;

但Chrome扩展程序调试程序会输出此错误:

Uncaught TypeError: Object #<Object> has no method 'executescript'

我想立即反映对content_script或实际网页的选项的任何更改。

在page_action范围内,如何到达“chrome”对象?

1 个答案:

答案 0 :(得分:2)

现在尝试将executescript更改为executeScript首都'S'非常重要。

executeScriptinsertCSS主要用于将js或css文件注入给定选项卡而不是原始代码。当您想要在特定情况下注入该代码时,可以使用它们。在您的代码中,您没有为注入代码的选项卡指定id,因此它只是在给定的上下文中注入它。如果您使用chrome.tabs.query之类的消息传递,您应该能够将代码注入实际的选项卡。

当您从Page Action更改弹出窗口中的选项时,您似乎试图影响给定标签上的某种更改我个人会建议您使用jQuery进行实际更改从另一个问题传递的消息,以将消息发送到给定选项卡。您可以尝试通过编程注入cssJavascript来执行此操作,但选项中的连续更改可能会产生不良结果。

我不知道您要尝试进行哪些更改的具体细节。如果它们纯粹为css,那么您可以在页面中注入一个样式表,只需在要更改的内容上切换类,并为每个方案创建一个类。如果您更详细地描述您想要做的事情,我可以提供更详细的建议。