Chrome扩展程序在Background.js中注册事件

Joe*_*lum 5 javascript javascript-events google-chrome-extension

我的扩展需要为其用户提供一些服务,其中一部分工作是收听制表符创建事件.我在popup.js中拥有所有的javascript并自我调用chrome.tabs.onCreated.addListener(function(tab){

事情是扩展只监听标签创建事件,如果用户点击扩展符号(如果他打开扩展名因此激活popup.js),并且如果关闭poupup屏幕,则所有事件监听都会停止.(我通过写入控制台来验证它,如果你停下来思考它就有意义了)我的问题是:我希望在整个扩展的生命中听取事件(换句话说,自用户打开chrome以来),而不仅仅是用户弹出扩展名.

我知道有一个叫做背景页面的东西,我应该尝试将整个代码移到那里吗?我这背景页的常规做法是什么?只是事件监听器依赖于更多的功能和更多的对象,似乎我的代码几乎都会去那里.popup.js几乎什么都没有.另一件事是我不确定是否可以在'domcontentloaded'事件被触发之前在后台页面中注册事件(并且此事件仅在用户弹出扩展时触发).

任何帮助,将不胜感激!

Pau*_*aul 2

后台页面是处理该问题的最佳方法,它在浏览器运行时位于后台。有关更详细的说明,请参阅http://code.google.com/chrome/extensions/background_pages.html 。值得注意的是,它不一定是 HTML 页面,您可以只有一个脚本文件。

任何需要独立于浏览器操作运行的内容都应该在后台脚本中;在您单击按钮之前,弹出窗口实际上并不存在。您可以在后台脚本和弹出窗口之间传递数据,但如果需要,请查看http://code.google.com/chrome/extensions/messaging.html

另一件需要注意的事情是后台页面无法访问 DOM。你的 popup.js 也不会,所以这可能不是问题。

希望这可以帮助!