截至目前,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 如何助您打造卓越的用户体验。
![一个字典扩展程序,其中会显示所选字词的定义](https://cdn.statically.io/img/developer.chrome.google.cn/static/blog/extension-news-july-2023/image/a-dictionary-extension-s-df8e87f540be2.png?hl=zh-cn)
更强大的 Service Worker
现在,所有扩展程序事件都会重新启动扩展程序 Service Worker 的空闲计时器。在 Chrome 110 中,移除了扩展程序 Service Worker 的硬性 5 分钟最长生命周期。此外,发送至原生应用的消息和扩展程序中的消息会重新开始空闲计时器。如需了解详情,请参阅 Extension Service Worker 生命周期一文。
更多 API 发布
- Action API:从 Chrome 110 开始,您可以使用
setBadgeTextColor
() 和getBadgeTextColor()
自定义徽章文字。此外,您还可以使用isEnabled()
检查当前标签页是否启用了该操作。 - Commands API:Chrome 111 中修复了清单中
"commands._execute_action"
下声明的扩展程序快捷方式在转换为 MV3 期间无法持续存在的 bug。 - Downloads API:Chrome 的默认下载界面已从底部的任务栏移至多功能框右侧的位置。如需停用此行为,您可以使用
downloads.setUiOptions()
来代替setShelfEnabled()
。 - History API:
chrome.history.getVisits()
和chrome.history.search()
还会返回已同步到本地历史记录数据库的其他设备中的数据。这可能会增加历史记录条目数和访问次数。在 Chrome 115 中将isLocal
添加到VisitItem
(预计将在本月晚些时候推出稳定版),以便仅按本地访问次数进行过滤。 - Identity API:身份验证窗口现在显示为弹出式窗口,而不是占据整个应用窗口。为了在 JavaScript 重定向过程中授予更多控制权,我们添加了两个新选项:
abortOnLoadForNonInteractive
和timeoutMsForNonInteractive
。 - Storage API:在 Chrome 112 中,
chrome.session
的存储空间大小增加至 10MB。之后,chrome.local
的存储空间大小已更改为与 Chrome 114 中的大小一致。
即将推出...
即将推出的 Chrome 版本将引入许多功能,让扩展程序可以更轻松地迁移到 Manifest V3。有关即将进行的 MV3 迁移相关变更的列表,请查看我们的已知问题页面。此外,我们计划添加以下功能:
- DeclarativeNetRequest API:isUrlFilterCaseSensitive 属性的默认值将更改为
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 参考页。
更多动态
- 使用 Google Analytics(分析)4 演示了如何跟踪扩展程序弹出式窗口和 Service Worker 事件的使用情况。
- 使用地理定位介绍了如何使用 Offscreen API 获取扩展程序的地理位置。
- 音频录制和屏幕截图介绍了如何使用
chrome.tabCapture
和navigator.mediaDevices.getDisplayMedia()
API 从标签页、窗口或屏幕截取音频和视频。 - 我们在调试扩展程序指南中添加了新的调试提示。
- 我们更新了权限警告指南,以便您���轻松地了解权限警告的运作方式,以及如何提供更好的用户体验。此外,您还可以通过多种实用方法检查用户会看到什么警告。
- 我们的团队和贡献者还添加了新的 Manifest V3 扩展程序示例:扩展程序中的 WASM、Scripting API 演示、Side Panel API 实战宝典和 DeclarativeNetRequest API 示例。您可以在我们的 GitHub 示例代码库中探索其他扩展程序示例。
即将推出...
- 如何将远程托管的代码迁移到 Manifest V3。
- 如何为 Chrome 扩展程序运行自动化测试。
- 改进了声明式网络请求指南。
- 改进了内容脚本解释器。
💡? 您知道吗?
在结束之前,我们想分享一些实用的工具和数据洞见:
- Chrome 已开始支持 WebHID;从 Chrome 115 开始,您可以试用一下该 API(但请注意,该功能仍在开发中)。
- Puppeteer 现在支持使用
--headless=new
在无头模式下进行测试。如需了解详情,请阅读 Chrome 的无头模式升级博文。 - 借助扩展程序更新测试工具,您可以在清单中检查权限发生更改时会触发哪些警告。这样,您就可以像用户一样体验更新流程。这一点很重要,因为某些权限可能会停用该扩展程序,直到用户再次授予访问权限为止。
让我们保持联系!🙌
今年,扩展程序团队很高兴能在 Google I/O Connect 活动期间与扩展程序开发者面对面交流。我们正在打造可以与您交流的新空间,例如推出焦点小组和聚会活动。
在此期间,请继续在 chromium-groups 中提问,考虑加入 WECG,并在 developer.chrome.com GitHub 代码库中报告所有文档问题。
再次感谢您加入扩展程序开发者社区!