Google chrome extension 事件页面和背景页面

Google chrome extension 事件页面和背景页面,google-chrome-extension,Google Chrome Extension,因为Chrome扩展文档中没有明确的解释,所以我来这里寻求帮助 我了解到,背景页的发明基本上是为了延长扩展的生命周期,并设计用于保存值或保持“引擎”在后台运行,因此没有人注意到它。因为一旦你点击了扩展的图标,你就会得到他们所说的“弹出窗口”,一旦你点击了“弹出窗口”外的图标,它就会立即消失,最重要的是扩展“死亡”(它的生命周期结束) 到目前为止,我们都很好,一切都很好,但是:事件页面是在那之后发明的 它们基本上是后台页面,只有在被调用时才能工作(以提供更多的内存空间) 如果是这样的话,那不是自相

因为Chrome扩展文档中没有明确的解释,所以我来这里寻求帮助

我了解到,背景页的发明基本上是为了延长扩展的生命周期,并设计用于保存值或保持“引擎”在后台运行,因此没有人注意到它。因为一旦你点击了扩展的图标,你就会得到他们所说的“弹出窗口”,一旦你点击了“弹出窗口”外的图标,它就会立即消失,最重要的是扩展“死亡”(它的生命周期结束)

到目前为止,我们都很好,一切都很好,但是:事件页面是在那之后发明的
它们基本上是后台页面,只有在被调用时才能工作(以提供更多的内存空间)


如果是这样的话,那不是自相矛盾吗?如果事件页面只在被调用时才起作用,那么它们有什么用处呢?

有时背景页面只需要响应外部事件(消息、web请求、按钮单击等)

在这种情况下,A是有意义的。它并没有像停止扩展一样完全卸载—它定义了它的事件处理程序(它想要侦听的内容),然后在需要时关闭它。认为这是“我要睡觉了,除非发生意外,不要叫醒我”。 与您的示例不同的是:关闭的弹出窗口不再完全存在,而Chrome记住它需要在特定事件上调用特定扩展。如果该事件发生,后台页面将再次启动,并在其中触发事件

这可以节省资源,但并不总是合适的。关闭背景页的上下文会擦除其本地状态;它必须保存在各种存储API中,而不是保存在变量中。如果地方政府很复杂,那么可能不值得付出努力。此外,如果您的扩展需要快速或频繁地做出反应,那么挂起/恢复可能会影响性能


总之,事件页面不能完全替代背景页面;这就是为什么它们是可选的,而不是默认的。制作事件页面时,会出现以下错误


请注意,您的“弹出窗口是扩展中最重要的部分”:这正是为什么在大多数情况下它不能成为最重要的部分。通常,在弹出窗口旁边还使用背景页来保存事件侦听器和本地状态。

弹出窗口仅在显示时有效。它不能对用户打开某个页面做出反应,只能对用户点击按钮做出反应。听过的最好的解释先生,你介意我给你的fb吗?我不确定是否允许在这里索要,但是。。你愿意吗?是的,我不介意你知道我没有FB账户;)“事件页面不能完全替代背景页面”。。。文件另有说明:。。。“性能优势非常显著,尤其是在低功耗设备上。请尽可能使用它们来进行新的开发,并开始将现有的后台页面迁移到此新型号。”文档已移动,现在详细信息较少。WebArchive具有原始版本: