迁移到 Manifest V3

将 Manifest V2 扩展程序转换为 Manifest V3 扩展程序的指南。

本部分将帮助您将扩展程序从 Manifest V2 升级到 Manifest V3,这是 Chrome 扩展程序平台的最新版本。迁移工作大致分为以下几类。为帮助您跟踪自己的工作,我们提供了一份核对清单,其中总结了这些文件的内容。您可以使用清单访问内容,也可以深入了解内容。两条路径都以升级后的扩展程序结束。

  • 更新清单 - manifest.json 必须是 V3 特有的。本部分介绍了可单独进行的更改。与代码相关的清单变更会与它们支持的代码变更一起说明。
  • 迁移到 service worker - service worker 会替换扩展程序的后台或事件页面,以确保后台代码不会留在可能会影响性能的主线程中。这项变更还需要将 DOM、window 和某些扩展 API 调用移至离屏文档中。
  • 更新 API 调用 - 某些 API 调用需要替换为更现代的等效调用。
  • 替换了阻塞 Web 请求监听器 - 在 Manifest V2 中阻塞或修改网络请求可能会严重降低性能,并需要过度访问敏感用户数据。借助 Declarative Net Request API,扩展程序可以更少的权限来屏蔽或修改网页内容,而不会影响性能。
  • 提高扩展程序安全性 - Manifest V3 通过多种方式提高了扩展程序的安全性。除了增强的内容安全政策之外,还移除了对远程托管代码和任意字符串执行的支持。
  • 发布扩展程序 - 本部分介绍了如何分阶段发布 Manifest V3 扩展程序,以便先通过有限的受众群体进行测试,确保扩展程序按预期运行。

我们还提供 Extension Manifest Converter。它不会为您完成所有工作,但会帮助您入门。转换器的自述文件介绍了该工具会更改哪些内容。

保留当前功能集

为减少出现意外问题或 bug 的几率,我们建议您在迁移时不要添加新功能。例如,添加需要新权限的功能可能会触发权限警告,这会导致您的扩展程序被停用,直到用户接受新权限为止。如需了解在不显示警告的情况下添加权限的其他方法,请参阅权限警告最佳实践

Chrome 88 及更高版本普遍支持 Manifest V3。更新 API 调用时,您可能会发现替代功能在 Chrome 88 版之后才推出。API 参考文档包含各个 API 成员的支持信息。如果您发现需要使用这些功能,可以在清单文件中指定最低 Chrome 版本

新的扩展平台功能

自发布 Manifest V3 以来,我们一直在添加新功能,其中许多功能都可在 Manifest V2 和 Manifest V3 中使用。在转换时,您无需使用这些功能;不过,当这些功能取代旧功能时,您应优先使用这些功能,并预期被取代的功能最终会被弃用和移除。