0

我正在开发 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”对象?

4

1 回答 1

2

现在尝试更改executescriptexecuteScript大写“S”很重要。

executeScript并且insertCSS主要用于将 js 或 css 文件注入给定选项卡而不是原始代码。当您想在非常特定的情况下注入该代码时使用它们。在您的代码中,您没有指定id将代码注入到哪个选项卡中,因此它只是在给定的上下文中注入它。如果您在消息传递中使用chrome.tabs.querylike,您应该能够将代码注入到实际的选项卡中。

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

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

于 2013-02-28T05:50:01.063 回答