firefox - Firefox Web 扩展安装时的内容脚本注入(inject)

标签 firefox firefox-addon-webextensions

如果在 Firefox 的 manifest.json 中指定了内容脚本,Firefox 也会为已打开的选项卡加载内容脚本并执行它们,即使选项卡已经处于加载和就绪状态。

为已打开的选项卡安装扩展程序时,Google Chrome 不会添加任何内容脚本。为旧选项卡刷新页面时会加载内容脚本。

我想问的是Firefox的行为是预期的还是bug?

最佳答案

就兼容性而言,这是一个错误。

  • Chrome 不这样做。
  • 结果,许多扩展 implement custom logic来达到效果。
  • 必须考虑副作用。假设您的内容脚本将一些 UI 注入(inject)到页面中。然后更新扩展。这相当于重新启动扩展程序,突然间您有了 2 个 UI 副本。如果您仅附加事件监听器也有效,因为(至少在 Chrome 的情况下)旧内容脚本的上下文继续存在(处于“孤立”状态)。

  • 最后一点非常重要,这可能是 Chrome 默认不这样做的原因。在某个时候,我做了一个 very long post关于这个问题 - 如果你打算将此作为错误报告给 Mozilla,请包括。还有这个feature request这是相关的。

    明智的(并且向后兼容)是在 list 中的内容脚本描述中添加一个参数 - 是否注入(inject)现有页面。由开发人员来保证副作用得到处理。这通常是 requires even more code只是与旧脚本沟通它需要结束和清理。

    关于firefox - Firefox Web 扩展安装时的内容脚本注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37127391/

    相关文章:

    firefox-addon-webextensions - 如何以编程方式下载使用 Firefox WebExtension 创建的文件?

    javascript - 如何修复 TypeError : browser. storage is undefined in chrome/firefox web extension?

    javascript - 无法使用WebExtensions中的组件: get "ReferenceError: Cu is not defined"

    javascript - 是否可以在内容脚本中使用 onHistoryStateUpdated 事件?

    javascript - 基于 Angular 2 中按键的验证

    Javascript 导出文本文件在 Firefox 中无法识别\r\n

    asp.net-mvc - ActionLinks 在 FireFox 和 Safari 中并不总是有效

    jquery - Div 未在 FireFox 中正确定位

    Mac OS X Mountain Lion 10.8 中的 Firefox X11

    javascript - 在 WebExtension 中生成 HTML 结果为 `this.mDialog is null` 和 `can' t 访问死对象`