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

艾米·斯奇特
Amy Steam

迄今为止,在 Chrome 扩展程序领域,2023 年是忙碌的一年。您的宝贵反馈有助于我们改进该扩展程序平台和我们的文档。我们还会继续与 WebExtensions 社区论坛中的其他浏览器供应商合作,以便扩展程序 API 能够在各种浏览器中以更一致的方式运行。

在这篇博文中,我们将与您分享 Chrome 扩展程序团队在今年上半年实施的一些更改,以及将在本季度晚些时候发布哪些即将推出的功能。让我们开始吧!

新的扩展程序 API 和功能

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

亮点

屏幕外文档

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

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

新的 Side Panel API 🎉?

过去,在扩展程序中创建边栏的唯一方法是在每个页面上插入带有内容脚本的新元素。Chrome 114 中发布了 Side Panel API。现在,您可以更直接地为用户开发配套边栏体验。详细了解 Side Panel API 如何帮助您设计出众的用户体验

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

更可靠的 Service Worker

现在,所有扩展程序事件都会重启扩展程序 Service Worker 的空闲计时器。在 Chrome 110 中,移除了扩展程序 Service Worker 的 5 分钟硬性最长生命周期。此外,发送到原生应用的消息和扩展程序中的消息会重启闲置计时器。如需了解详情,请参阅扩展 Service Worker 生命周期一文。

更多 API 发布

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

即将推出...

即将推出的 Chrome 版本会引入许多功能,以便让扩展程序能够更轻松地迁移到 Manifest V3。如需查看即将进行的 MV3 迁移相关变更的列表,请参阅我们的已知问题页面。此外,我们计划增加以下功能:

  • DeclarativeNetRequest APIisUrlFilterCaseSensitive 属性的默认值将更改为 false。请参阅 WECG 会话。
  • File Handling API 将允许 ChromeOS 扩展程序打开具有指定 MIME 类型和文件扩展名的文件。此功能目前位于标志后面
  • 运行时 API:我们将发布 runtime.getContexts() 来取代已废弃的 extension.getViews()。以便扩展程序可以确定侧边栏或屏幕外文档等扩展程序页面是否已打开。请参阅 WECG 提案。
  • Service Worker:我们将向以下可显示用户提示的 Chrome API 添加强大的 keep-alive:permissions.request()desktopCapture.chooseDesktopMedia()identity.launchWebAuthFlow()management.uninstall()
  • Side Panel API:我们将发布 sidepanel.open(),它会为响应用户手势(例如点击上下文菜单)以编程方式打开扩展程序侧边栏。
  • TabCapture API:我们添加了从扩展 Service Worker 调用 getMediaStreamId() 并从屏幕外文档中的数据流 ID 获取 MediaStream 的功能。请参阅音频录制和屏幕截图,查看相关示例。

这些公告在 Chrome Beta 版中推出后,敬请关注扩展程序的新变化页面。

文档升级和更多 Manifest V3 指南

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

亮点

  • 新增的 MV3 迁移部分介绍了将 Manifest V2 扩展程序转换为 Manifest V3 的实用方法。
  • 扩展 Service Worker 指南提供了有关扩展 Service Worker 主题的详细信息。包括它们的注册和更新方式、生命周期的外观、导入的工作原理等。
  • 使用 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 代码库中报告所有文档问题。

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