由于Chrome扩展程序文档中没有明确说明,我来到这里寻求帮助。
我了解到背景页面基本上是为了延长扩展的生命周期而设计的,旨在保持值或保持“引擎”在后台运行,因此没有人注意到它。因为一旦你点击了扩展程序的图标,就会得到他们所谓的“弹出窗口”,一旦你点击“弹出窗口”之外它会立即消失,最重要的是扩展程序“死亡”(它的生命周期结束)。
到目前为止,我们很好,一切都很好但是:事件页面是在那之后发明的 它们基本上是后台页面,只有在被调用时才能工作(以提供更多的内存空间)。
如果是这样,那么这不会是矛盾的吗?如果事件页面仅在被调用时才起作用,它们的用途是什么?
答案 0 :(得分:8)
有时候,背景页面只需要响应他们之外的事件(消息,网络请求,按钮点击等)。
在这种情况下,event page是有道理的。它没有被完全卸载,好像扩展已经停止 - 它定义了它的事件处理程序(它想听什么),然后关闭直到需要它。考虑到这是"我要去睡觉;除非A发生,否则不要叫醒我。"
与您的示例存在差异:已关闭的弹出式窗口不再完全存在,而 Chrome会记住它需要在特定事件上调用特定的扩展程序。如果发生该事件,则会再次启动后台页面,并在其中触发该事件。
这节省了资源,但并不总是合适。关闭后台页面的上下文会擦除其本地状态;它必须保存在各种存储API而不是变量中。如果当地的国家很复杂,那可能不值得。此外,如果你的扩展需要非常快或者经常做出反应,那么暂停/恢复可能会受到性能影响。
总而言之,事件页面并非完全替代背景页面;这就是为什么它们是可选的而不是默认的。制作活动页面时有many things to consider。
P.S。关于你的"弹出窗口是扩展的最重要部分":这正是为什么它在大多数情况下不是最重要的部分。通常,后台页面也会与弹出窗口一起使用,以保持事件侦听器和本地状态。