2012-08-07 103 views
4

我的扩展需要为用户提供一些服务,其中一部分工作是监听选项卡创建事件。我有我的所有JavaScript在popup.js和自我调用 chrome.tabs.onCreated.addListener(函数(选项卡){Chrome扩展在Background.js中注册事件

事情是扩展只侦听选项卡创建事件,如果用户点击扩展符号(如果他打开扩展,因此激活popup.js),并且如果poupup屏幕关闭,所有事件监听停止(我通过写入控制台来验证它,如果你停下来思考它,这是有道理的) 我的问题是:我希望在整个延期生命期间(换句话说,自用户打开Chrome之后)收听活动,而不仅仅是当用户弹出扩展程序时。

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

任何帮助将不胜感激!

回答

2

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

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

另外需要注意的是背景页面无法访问DOM。您的popup.js也不会因此而出现问题。

希望这会有所帮助!

相关问题