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

Amy Steam
Amy Steam

截至目前,2023 年对于 Chrome 扩展程序来说是忙碌的一年。您的宝贵反馈有助于我们改进扩展程序平台和我们的文档。我们还会继续与 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 分钟最长生命周期。此外,发送至原生应用的消息和扩展程序中的消息会重新开始空闲计时器。如需了解详情,请参阅 Extension Service Worker 生命周期一文。

更多 API 发布

  • Action API:从 Chrome 110 开始,您可以使用 setBadgeTextColor()getBadgeTextColor() 自定义徽章文字。此外,您还可以使用 isEnabled() 检查当前标签页是否启用了该操作。
  • Commands APIChrome 111 中修复了清单中 "commands._execute_action" 下声明的扩展程序快捷方式在转换为 MV3 期间无法持续存在的 bug。
  • Downloads API:Chrome 的默认下载界面已从底部的任务栏移至多功能框右侧的位置。如需停用此行为,您可以使用 downloads.setUiOptions() 来代替 setShelfEnabled()
  • History APIchrome.history.getVisits()chrome.history.search() 还会返回已同步到本地历史记录数据库的其他设备中的数据。这可能会增加历史记录条目数和访问次数。在 Chrome 115 中将isLocal添加到 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 类型和文件扩展名的文件。此功能目前位于标志背后
  • Runtime 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 指南

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

亮点

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

更多动态

即将推出...

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

💡? 您知道吗?

在结束之前,我们想分享一些实用的工具和数据洞见:

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

让我们保持联系!🙌

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

在此期间,请继续在 chromium-groups 中提问,考虑加入 WECG,并在 developer.chrome.com GitHub 代码库中报告所有文档问题。

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