2012-05-21 193 views
0

我是开发Chrome扩展的初学者我遇到如下问题:铬扩展程序

如何为当前打开的页面执行脚本?我想用background.html来做。我已经尝试运行

document.addEventListener('DOMContentLoaded', exec_fun); 

window.addEventListener('DOMContentLoaded', exec_fun); 

以及在manifest.json注册backgroung.html执行exec_fun()的功能,但它不能正常工作。我究竟做错了什么?

+0

请问您可以发送您的清单,也许更多的代码?问题可能在那里。另外,请尝试检查您是否已为此指定了所需的权限(如果需要的话)。 –

回答

1

如果你想有一个脚本在每个页面上运行,你应该写一个内容脚本: http://code.google.com/chrome/extensions/content_scripts.html

内容脚本的页面内运行,这样你就可以访问它的DOM,并使用其事件。

另一方面,background.html只在扩展启动时运行一次(通常在浏览器打开时),并且它与任何选项卡或页面无关。它是你的扩展“操作基础”。这可不是你想要把你的脚本,但您使用侦听器捕捉与onUpdated每一页变化的地方,一个触发间隔时间标签的URL变化:

http://code.google.com/chrome/extensions/tabs.html#event-onUpdated

“,也注册backgroung。 html在manifest.json中执行exec_fun()函数“

你是怎么做到的?我认为这不是方法。

+0

不......我刚刚通知我已经在“背景”中注册了background.html:manifest.json文件的字段来告诉你,错误不是因为这两个监听器我都在background.html中添加脚本atg。顺便说一下,我可以理解我应该使用内容脚本。谢谢你的答案! –

+0

现在的问题是,我无法使用铬。* API由于脚本定义为content_script? –

+0

是的,这是一个安全问题。内容脚本可以访问DOM,但不能使用(大部分)chrome的API;后台脚本可以使用Chrome的API,但无法访问DOM。您的内容脚本应该与您的后台脚本进行交流:http://code.google.com/chrome/extensions/content_scripts.html#host-page-communication –