Chrome 扩展程序在后台注册事件.js

Chrome Extension Registering Events in Background.js

本文关键字:注册 事件 js 后台 扩展 程序 Chrome      更新时间:2023-09-26

我的扩展需要为其用户提供一些服务,其部分工作是侦听选项卡创建事件。我所有的 JavaScript 都在弹出窗口中.js并有自我调用:

chrome.tabs.onCreated.addListener(function(tab) { 

问题是,如果用户单击扩展符号(如果他打开扩展程序因此激活弹出窗口.js),并且如果弹出屏幕关闭,则扩展程序仅侦听选项卡创建事件,并且如果弹出窗口屏幕关闭,则所有事件侦听都将停止。(我通过写信给控制台来验证它,如果你停下来想一想,这是有道理的)。

我的问题是:我想在扩展程序的整个生命周期中(换句话说,自从用户打开 chrome 以来)收听事件,而不仅仅是在用户弹出扩展程序时。

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

任何帮助将不胜感激!

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

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

需要注意的另一件事是,背景页面无法访问 DOM。就此而言.js您的弹出窗口也不会,因此这可能不是问题。

希望这有帮助!