我正在开发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”对象?
答案 0 :(得分:2)
现在尝试将executescript
更改为executeScript
首都'S'非常重要。
executeScript
和insertCSS
主要用于将js或css文件注入给定选项卡而不是原始代码。当您想要在特定情况下注入该代码时,可以使用它们。在您的代码中,您没有为注入代码的选项卡指定id
,因此它只是在给定的上下文中注入它。如果您使用chrome.tabs.query
之类的消息传递,您应该能够将代码注入实际的选项卡。
当您从Page Action
更改弹出窗口中的选项时,您似乎试图影响给定标签上的某种更改我个人会建议您使用jQuery
进行实际更改从另一个问题传递的消息,以将消息发送到给定选项卡。您可以尝试通过编程注入css
或Javascript
来执行此操作,但选项中的连续更改可能会产生不良结果。
我不知道您要尝试进行哪些更改的具体细节。如果它们纯粹为css
,那么您可以在页面中注入一个样式表,只需在要更改的内容上切换类,并为每个方案创建一个类。如果您更详细地描述您想要做的事情,我可以提供更详细的建议。