Chrome 扩展程序发生了什么情况?

到目前为止,2023 年在 Chrome 扩展程序领域是充实的一年。感谢您提供宝贵的反馈,这有助于我们改进扩展程序平台和文档。我们还将继续与 WebExtensions 社区群组中的其他浏览器供应商合作,以便扩展程序 API 在各浏览器中的运行更加一致。

在本文中,我们将分享 Chrome 扩展程序团队在上半年完成的一些变更,以及本季度晚些时候将发布的即将推出的功能。让我们开始吧!

新的扩展程序 API 和功能

在本部分中,我想重点介绍一些重要的 API 发布,简要介绍其他 API 改进,并分享即将发布的 API。

亮点

屏幕外文档

Offscreen API 在 Chrome 109 中推出。它允许 Manifest V3 扩展程序处理需要与 DOM 或窗口互动的用例,而这些用例无法在扩展程序 Service Worker 中执行。此外,Chrome 114 还引入了另外两个屏幕外原因:'WORKERS' 用于在文档需要生成工作器的实例中,'LOCAL_STORAGE' 用于帮助将数据从 window.localStorage 迁移到 chrome.storage API

从 Chrome 115 开始,您可以在创建离屏文档时提供多个原因。这样,您就可以在同一文档中执行两项相关任务。

全新的侧边栏 API 🎉?

过去,在扩展程序中创建边栏的唯一方法是在每个网页上通过内容脚本注入一个新元素。Chrome 114 中推出了 Side Panel API。现在,您可以更轻松地为用户开发配套边栏体验。详细了解如何利用 Side Panel API 设计出卓越的用户体验

显示所选字词定义的字典扩展程序
侧边栏字典扩展程序。请参阅 chrome-extensions-samples 代码库中的代码

更强大的 Service Worker

现在,所有扩展程序事件都会重启扩展程序服务工件的空闲计时器。在 Chrome 110 中,我们移除了扩展程序服务 worker 的 5 分钟硬性生命周期上限。此外,发送到原生应用扩展程序内的消息也会重启空闲计时器。如需了解详情,请参阅扩展程序服务工件生命周期一文。

推出更多 API

  • Action API:从 Chrome 110 开始,您可以使用 setBadgeTextColor()getBadgeTextColor() 自定义徽章文本。此外,您还可以使用 isEnabled() 检查当前标签页是否启用了相应操作。
  • Commands API:修复了以下 bug:在转换为 MV3 期间,在清单中的 "commands._execute_action" 下声明的扩展程序快捷方式不会保留。Chrome 111
  • Downloads API:Chrome 中的默认下载内容界面已从底部的搁架移至万能搜索框的右侧。如需停用此行为,您可以使用 downloads.setUiOptions() 替换 setShelfEnabled()
  • History APIchrome.history.getVisits()chrome.history.search() 还会返回已同步到本地历史记录数据库的其他设备中的数据。这可能会导致历史记录条目增多,以及访问次数增加。Chrome 115(预计于本月底发布稳定版)在 VisitItem 中添加了 isLocal,以便仅按本地访问进行过滤。
  • Identity API:身份验证窗口现在显示为弹出式窗口,而不是占据整个应用窗口。为了在 JavaScript 重定向过程中提供更强大的控制功能,我们添加了两个新选项:abortOnLoadForNonInteractivetimeoutMsForNonInteractive
  • Storage API:在 Chrome 112 中,chrome.session 存储空间大小已增加到 10 MB。然后,在 Chrome 114 中更改了 chrome.local 存储空间大小,使其与之一致。

即将推出…

即将发布的 Chrome 版本将引入许多功能,以便扩展程序更轻松地迁移到 Manifest V3。如需查看即将发生的与 MV3 迁移相关的变更列表,请访问我们的已知问题页面。此外,我们还计划添加以下功能:

  • DeclarativeNetRequest APIisUrlFilterCaseSensitive 属性的默认值将更改为 false。请参阅 WECG 会话。
  • 借助 File Handling API,ChromeOS 扩展程序可以打开具有指定 MIME 类型和文件扩展名的文件。此功能目前处于标志后台
  • Runtime API:我们将发布 runtime.getContexts() 来替代已废弃的 extension.getViews()。这样,扩展程序就可以确定侧边栏或屏幕外文档等扩展程序页面是否处于打开状态。请参阅 WECG 提案。
  • 服务工件:我们将向显示用户提示的 Chrome API 添加强效的保活机制:permissions.request()desktopCapture.chooseDesktopMedia()identity.launchWebAuthFlow()management.uninstall()
  • 侧边栏 API:我们将推出 sidepanel.open(),该 API 可在响应用户手势(例如点击上下文菜单)时以编程方式打开扩展程序侧边栏。
  • TabCapture API:我们添加了从扩展程序服务工作器调用 getMediaStreamId() 并从屏幕外文档中的串流 ID 获取 MediaStream 的功能。如需查看示例,请参阅录音和屏幕截图

请关注扩展程序新变化页面,以便在这些功能在 Chrome Beta 版中推出后立即了解相关动态。

文档升级和更多 Manifest V3 指南

我们还一直在努力改善开发者的学习体验。非常感谢您抽出宝贵时间在 chromium-group 上提问,并在 developer.chrome.com 上报告文档问题。

亮点

  • 新增的 MV3 迁移部分提供了将 Manifest V2 扩展程序转换为 Manifest V3 的实用方法。
  • 扩展程序服务工件指南详细介绍了扩展程序服务工件主题。其中包括注册和更新方式、生命周期、导入方式等。
  • 使用 Service Worker 处理事件教程介绍了扩展程序 Service Worker 的基础知识。它会构建一个多功能框扩展程序,以便您快速访问扩展程序 API 参考页面。

更多动态

即将推出…

  • 如何将远程托管代码迁移到 Manifest V3。
  • 如何为 Chrome 扩展程序运行自动化测试。
  • 改进了声明式网络请求指南。
  • 改进了内容脚本说明。

💡? 您知道吗?

在结束之前,我们想分享几个实用工具和数据分析:

  • Chrome 开始支持 WebHID;从 Chrome 115 开始,您可以试用该 API(但请注意,该 API 仍在开发中)。
  • Puppeteer 现在支持使用 --headless=new 在无头模式下进行测试。如需了解详情,请参阅 Chrome 无头模式升级博文。
  • 借助扩展程序更新测试工具,您可以查看在清单中更改权限时会触发哪些警告。这样,您就可以像用户一样体验更新流程。这一点很重要,因为某些权限可能会停用扩展程序,直到用户再次授予访问权限。

欢迎与我们联系!🙌

今年,扩展程序团队很高兴能在 Google I/O Connect 活动期间与扩展程序开发者面对面交流。我们正在努力打造新的交流空间,以便与您建立联系,例如推出焦点小组和聚会活动。

与此同时,请继续在 chromium-groups 上提问,考虑参与 WECG,并在 developer.chrome.com GitHub 代码库上报告任何文档问题。

再次感谢您加入扩展程序开发者社区!