安装时用于Firefox Web扩展的内容脚本注入

时间:2016-05-10 00:18:05

标签: google-chrome firefox google-chrome-extension firefox-webextensions

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

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

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

1 个答案:

答案 0 :(得分:5)

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

  1. Chrome不会这样做。
  2. 因此,许多扩展程序implement custom logic可以达到效果。
  3. 必须考虑副作用。假设您的内容脚本将一些UI注入页面。然后更新扩展名。这相当于扩展重启,突然间你有2个UI副本。如果你只是附加事件监听器也是有效的,因为(至少在Chrome的情况下)旧的内容脚本的上下文仍然存在(在"孤立的"状态)。
  4. 最后一点非常重要,可能是Chrome默认情况下没有这样做的原因。在某些时候,我针对此问题提出了very long post - 如果您要将此报告为Mozilla的错误,请将其包括在内。还有与此feature request相关的内容。

    什么是明智的(向后兼容)是在清单中的内容脚本描述中添加一个参数 - 是否注入现有页面。开发人员可以保证副作用得到妥善处理。这通常是requires even more code,只需与旧脚本进行通信,即需要关闭和清理。