如何在Chrome扩展的后台页面上执行脚本
问题描述:
我正在开发Chrome扩展。我的manifest.json的是:实际网页上如何在Chrome扩展的后台页面上执行脚本
"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”对象?
答
现在试试将executescript
更改为executeScript
首都'S'很重要。
executeScript
和insertCSS
主要用于将js或css文件注入给定选项卡而不是原始代码。当你想在非常特定的情况下注入代码时,会使用它们。在你的代码中,你并没有指定一个id
的代码插入哪个标签,所以它只是在给定的上下文中注入它。如果使用与消息传递类似的chrome.tabs.query
,则应该能够将代码注入到实际选项卡中。
看来你正试图影响某种变化当您更改选项从Page Action
一个弹出一个给定的选项卡上的我个人会建议使用jQuery
,同时使用来自其他问题将消息传递给做出的实际变化向给定选项卡发送消息。您可以尝试使用css
或Javascript
的程序化注入来执行此操作,但选项中的连续更改可能会产生不良结果。
我不知道你正在尝试做什么样的改变的确切细节。如果他们纯粹是css
,那么您可以将一个样式表注入到页面中,只需在要更改的事物上切换一个类,并为每个方案创建一个类。如果你更详细地描述你想要做的事情,我可以给出更详细的建议。
它真的取决于你在做什么,但是大多数时候你应该可以使用ContentScript http://developer.chrome.com/extensions/content_scripts.html 这是一个更好的做法。 – 2013-02-28 08:00:51