5

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

问题是,如果用户单击扩展符号(如果他打开扩展因此激活 popup.js),扩展只会监听选项卡创建事件,并且如果弹出屏幕关闭,所有事件监听都会停止。(我通过写信给控制台验证了它,如果你停下来思考它是有道理的)我的问题是:我想在扩展的整个生命周期中收听事件(换句话说,自从用户打开 chrome 以来),而不仅仅是当用户弹出扩展名。

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

任何帮助,将不胜感激!

4

1 回答 1

2

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

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

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

希望这可以帮助!

于 2012-08-07T11:24:00.253 回答