请经常查看此页面,了解 Chrome 扩展程序、扩展程序文档或相关政策的变更或其他变更。您可以在“扩展程序”Google 群组上找到其他通知。Chrome 时间表列出了稳定版和 Beta 版的发布日期。
Chrome 132:Tabs API 中新增了 frozen 属性
从 Chrome 132 开始,Tabs API 中的 frozen
属性用于指示标签页是否已被浏览器冻结。发送到已冻结标签页的消息将加入队列,并在标签页解冻后处理。
Chrome 扩展程序中的 Prompt API
适用于扩展程序的 Prompt API 现已推出源代码试用版,您可以构建在浏览器中使用 Gemini Nano(我们最高效的语言模型)的 Chrome 扩展程序。
加入在 Chrome 131 到 136 中运行的 Prompt API 源试用,并分享您的反馈。您的反馈将直接影响我们构建和实现此 API 以及所有内置 AI API 的未来版本的方式。
博文:2024 年 10 月 Chrome 扩展程序的变化
我们又来盘点一下 Chrome 扩展程序领域的最新动态:AI 集成、新 API、活动和视频方面都有令人振奋的更新。如需了解详情,请参阅 Chrome 扩展程序动态 10 月版!
加入内置 AI 挑战
Chrome 推出了内置 AI 挑战赛:诚邀您使用 Chrome 的集成 AI 模型和 API 创建创新的 Web 应用和 Chrome 扩展程序,并有机会赢取总计 65,000 美元的奖品。
请访问内置 AI 挑战赛网站进行注册并了解详情。我们迫不及待地想看到您将 AI 融入 Web 后会创作出什么样的作品!
Chrome 130:action.onUserSettingsChanged
从 Chrome 130 开始,action.onUserSettingsChanged 事件可用。此举措是根据 WebExtensions 社区群组中的提案做出的。感谢 Microsoft 对 Chromium 做出的贡献。
Chrome 130:StorageArea.getKeys()
从 Chrome 130 开始,chrome.storage
API 使用的 StorageArea 接口上提供了 getKeys() 方法。此举措是根据 WebExtensions 社区群组中的提案做出的。
Chrome 128:声明式网络请求中的响应标头匹配
从 Chrome 128 开始,我们将在声明式网络请求 API 中添加对响应标头匹配的支持。这是一个常见请求,尤其是在匹配 Content-Type 标头时,因此我们与 WebExtensions 社区群组一起设计了合适的 API。
我们更新了 API 参考,添加了新的 responseHeaders
和 excludedResponseHeaders
字段。您可以使用这些方法来检查给定标头是否存在以及其值。
在此更新中,我们在文档中添加了新的规则评估部分,其中介绍了规则匹配方式。特别是对于标头匹配,只有在收到响应标头后,规则才能运行,因此它们的应用时间比其他规则晚。这意味着,请求确实会在被屏蔽或重定向之前到达服务器。
视频:什么是内容脚本?
了解 Chrome 扩展程序中的内容脚本,包括如何注册要在特定网页上运行的 CSS 和 JavaScript。观看完整视频。
重要政策更新
Chrome 应用商店团队对开发者计划政策页面进行了一系列更新,旨在鼓励开发优质产品、防范欺骗行为,并确保用户在知情的情况下同意。Chrome 应用商店政策经理 Rebecca Soares 在“Chrome 扩展程序:重要政策更新”博文中总结了所有更新。
博文:2024 年 7 月 Chrome 扩展程序的最新动态
在过去三个月内,我们推出了多项重大更新和新功能,包括开始逐步淘汰清单 V2。欢迎阅读 Chrome 扩展程序动态(7 月版),了解最新动态!
视频:什么是远程托管代码?
Chrome 扩展程序团队的 Patrick 介绍了 Chrome 扩展程序中的远程托管代码 (RHC) 的概念。了解为何不再允许使用 RHC、如何检测 RHC,以及如果您的扩展程序需要更新该怎么做。观看完整视频。
Chrome 127:新增了 action.openPopup API
从 Chrome 127 开始,所有扩展程序都可以使用 action.openPopup
API。以前,此功能仅适用于 Canary 版或根据政策安装的扩展程序。
视频:信任与安全团队访谈
Chrome 扩展程序开发者关系团队与负责 Chrome 应用商店审核工作的信任与安全团队进行了交流,以解答您的疑问。观看完整视频。
博文:开始逐步淘汰 Manifest V2
从 6 月 3 日起,如果用户仍安装了 Manifest V2 扩展程序,那么在访问扩展程序管理页面 chrome://extensions 时,部分用户会开始看到警告横幅,告知他们已安装的某些 (Manifest V2) 扩展程序很快将不再受支持。Chrome Beta 版、Dev 版和 Canary 版均会显示此横幅。如需了解详情,请参阅官方公告
侧边栏界面更新
我们最近对侧边栏界面进行了一些更改,包括添加了固定图标并移除了全局侧边栏图标。如需了解详情,请参阅PSA,并查看我们更新后的文档和示例。
博文:2024 年 Google I/O 大会上有关 Chrome 扩展程序的演讲
又一年的 Google I/O 大会已落下帷幕,我们已介绍了所有令人兴奋的扩展程序更新!请前往 YouTube 观看完整视频,并阅读我们的博文,了解一些精彩内容。
针对符合条件的声明式网络请求更改跳过审核
现在,在 Chrome 应用商店中,使用 Declarative Net Request API 时,您可以跳过符合条件的更改的审核。如需详细了解资格条件和如何选择启用,请参阅 Chrome 应用商店文档。
Chrome Web Store API 中提供的 deployPercentage
我们最近更新了 Chrome 应用商店 API 文档,在其中添加了有关 deployPercentage
的信息。借助 deployPercentage
,您可以为部分发布部署分配百分比。了解 deployPercentage
。
Chrome 126:扩展程序中的源试用
Chrome 126 引入了新的 manifest.json 字段 - trial_tokens
,可让您选择在所有扩展程序平台上参与源测试和弃用测试。如需了解详情,请参阅指南。
博文:Chrome 扩展程序的最新动态 - 2024 年 4 月
我们发布了新版 Chrome 扩展程序动态。该帖子介绍了扩展程序团队在过去几个月里一直在做些什么。其中包括:Chrome 应用商店中的版本回滚、更完善的 Firebase Auth 支持,以及更多 API 发布和更新。
Chrome 应用商店开发者信息中心中的版本回滚
在 Chrome 应用商店中将您的扩展程序回滚到之前发布的版本,无需额外审核!如需了解详情,请参阅博文和文档。
Chrome 124:高级 documentScan API
ChromeOS 现已推出高级 documentScan
API,可从连接的文档扫描仪发现和检索图片。
Chrome 124:Service Worker 中的 WebGPU 支持
从 Chrome 124 开始,Service Worker 支持 WebGPU。如需快速上手,请查看 WebGPU 扩展程序示例。
Chrome 123:Events API 支持按 CIDR 块进行过滤
Events API 现在支持按无类别域间路由 (CIDR) 块进行过滤。CIDR 块是指共享网络前缀和相同位数的 IP 地址集合。以前,如果开发者需要滤除多个 IP 地址,则需要为屏蔽范围中的每个地址配置一个过滤规则。现在,当扩展程序调用 addListener()
时,传入的规则意味着,只有当网址的主机部分是 IP 地址且包含在数组中指定的任何 CIDR 块中时,才会调用事件处理脚本。
Chrome 应用商店:更新了扩展程序名称长度要求
在 Chrome 应用商店中,manifest.json 中扩展程序的 "name"
字段现在的通用字符数限制为 75 个字符。以前,英语的字符数上限为 45 个字符,其他语言区域的 "name"
字段没有限制。
这最初是为了容纳可能无法用相同字符数来体现的文化和语言差异。遗憾的是,少数开发者滥用此功能在商店中发布垃圾内容。因此,我们将统一上限提高到 75 个字符。目前,此限制涵盖了商店中的几乎所有扩展程序,因此您可能无需因此次变更而采取任何措施。如果您尝试上传的扩展程序名称超出上限,商店会阻止上传。
博文:eyeo 测试 Service Worker 暂停功能的历程
在 eyeo 的扩展程序引擎团队撰写的这篇文章中,我们将探讨测试扩展程序服务工作器的问题。在 Manifest V2 中,扩展程序位于后台页面中,后台页面在整个扩展程序生命周期内处于唤醒状态。而清单 V3 改用服务工件,服务工件在设计上会在不需要时关闭,从而节省资源。这会带来一些测试方面的挑战。本文介绍了 eyeo 如何应对这些挑战。
Chrome 123:闹钟现在会在设备处于休眠状态时运行
使用 chrome.alarms
API 设置的闹钟在设备进入休眠状态时不再延迟。当设备唤醒时,无论错过了多少个闹钟,闹钟都会响一次。例如,假设闹钟设为每小时响铃一次,并且闹钟所在的设备在凌晨 12:55 到凌晨 2:05 处于休眠状态,那么只有凌晨 2:00 的闹钟会触发 onAlarm
事件。它会尽可能接近凌晨 2:00 触发,如果设备处于休眠状态,则会在设备唤醒时立即触发。
此次变更使 Chrome 与 Web Extensions Community Group 中商定的行为保持一致。
博文:使用扩展程序消息端口时 bfcache 行为的变化
往返缓存 (bfcache) 是一种浏览器优化,可实现即时返回和前进导航。从 Chrome 123 开始,当具有打开的扩展程序端口的网页存储在 bfcache 中时,消息通道会关闭,这意味着系统不会向该网页发送任何消息。因此,扩展程序脚本应监听 onDisconnect
等生命周期事件,并在从 BFCache 恢复网页时设置新连接。
如需了解详情和示例代码,请参阅使用扩展程序消息端口时 BFCache 行为的变更。
Chrome 122:对异步扩展程序 API 的 Promise 支持
我们已为所有异步扩展程序 API 方法实现 Promise 支持。这样做是为了通过改进处理异步操作的人体工学,使 API 方法实现现代化。由于其当前接口与 Promise 不兼容,因此少数方法(例如 desktopCapture.chooseDesktopMedia()
)仍仅支持回调。为了实现向后兼容性,系统仍支持回调。如果您发现 Promise 失败,请提交 bug。
实时通信的新指南
我们刚刚发布了有关扩展程序实时选项的指南。实时更新可提供从服务器直接到扩展程序安装的即时通信路径。此外,我们还提供了有关使用 chrome.gcm、Web Push 的新指南。
新指南和示例:测试 Service Worker 终止
我们刚刚发布了一篇指南,介绍了如何使用 Puppeteer 测试服务工件终止。随附的示例在 Puppeteer 和 Selenium 中演示了这一点。
更新了原生消息的示例
我们刚刚发布了更新后的原生消息示例。借助此 API,您的扩展程序可以启动并与其他应用通信。感谢 GitHub 贡献者 Shubham-Rasal 为此所做的努力。
Chrome 121:tabs.Tab 上新增了 lastAccessed 属性
向 tabs.Tab
对象添加了一个名为 lastAccessed
的新属性。此属性表示标签页的上次激活时间。返回的值以从纪元开始计算的毫秒数为单位。
Chrome 121:不受支持的“后台”按键现在会发出警告
从 Manifest V2 更改为 Manifest V3 时,"background"
清单键的子项已更改,以适应将后台脚本替换为扩展程序 Service Worker。以前,如果将 Manifest V2 键 "scripts"
、"page"
或 "persistent"
添加到 Manifest V3 扩展程序的 "background"
键,系统会抛出错误。现在,如果存在这些键,系统会触发警告。
此举旨在根据社区群组中的提案,在多个浏览器的扩展程序中使用单个清单文件。
Chrome 120:将闹钟最小精度缩短至 30 秒
从 Chrome 120 开始,Manifest V3 扩展程序可以使用 chrome.alarms
API 设置 30 秒的延迟或周期,而无需使用 60 秒或更长的值。
博文:恢复向 Manifest V3 的过渡
Manifest V2 支持时间表已更新。如需了解详情,请参阅我们的 2023 年 11 月的博文。
博文:Manifest V3 中内容过滤支持方面的改进
如需了解我们如何改进 declarativeNetRequest API,请参阅我们的新博文。
博文:Chrome 120 中扩展程序的新变化
Chrome 120 Beta 版最近发布了。如需简要了解与扩展程序开发者相关的重要更新,请参阅我们的新博文:Chrome 120 中扩展程序方面的新变化。此版本也是一个重要的里程碑,因为它从关键平台差距列表中移除了最后两个项目(userScripts、ChromeOS 上的文件处理程序)。
重要提示:开发者信息中心中隐私权政策网址的处理方式发生变化
开发者信息中心内的隐私权政策现已在商品级别添加。这样,您就可以为每项内容提供不同的隐私权政策。如需详细了解这项变更,请参阅我们的公共服务通告。
视频:与 Matt Frisbie 的对话
我们刚刚在 Chrome for Developers YouTube 频道上发布了一段新视频,与 Google 开发者专家兼作者 Matt Frisbie 进行了对话。请点击此处观看。
关于测试扩展程序的新指南
我们刚刚发布了有关如何为扩展程序编写自动化测试的新指南,其中包括如何编写单元测试,以及有关端到端测试的一般指南和教程。
博文:Chrome 扩展程序的最新动态 - 2023 年 10 月
我们刚刚发布了《Chrome 扩展程序动态》第二版。该帖子介绍了扩展程序团队在过去几个月内一直在努力解决的问题,包括解决服务工件稳定性问题,以及在缩小所有 MV3 平台差距方面取得的良好进展。我们还将分享即将发布的令人兴奋的 API,例如阅读列表 API 和用户脚本 API。
提高了 Declarative Net Request API 中的静态规则集限制
根据 Web Extensions 社区群组的反馈,我们将启用的静态规则集的数量上限从 10 大幅提高到了 50。此外,我们将允许的静态规则集总数从 50 个增加到 100 个。此功能目前在 Canary 版中提供。
改进了有关远程托管代码的指导
Manifest V3 的一项要求是,扩展程序不得再使用远程托管的代码。虽然这从一开始就已包含在迁移指南中,但我们认为有必要改进与此问题相关的指导。该页面现在提供了更多信息,介绍了 Manifest V3 中仍可执行的操作,并详细介绍了升级策略。
排查 Chrome 应用商店违规行为中新增了相关内容。新增了一个部分,介绍了包含远程托管代码的扩展程序被拒的常见原因。
Chrome 118:isUrlFilterCaseSensitive 现在默认为 false
从 Chrome 118 开始,chrome.declarativeNetRequest API 中的 isUrlFilterCaseSensitive
属性已更改为默认为 false
。如果您想保留旧行为,可以在 declarativeNetRequest 规则中将 isUrlFilterCaseSensitive
明确设置为 true
。
此举是根据 Web Extensions 社区群组中的讨论做出的。Firefox 和 Safari 已实施类似的更改。
有关 Cookie 和 Web 存储空间 API 的文档
我们发布了一份新指南,介绍了 Cookie 和 Web Storage API 在 Chrome 扩展程序中的运作方式。其中详细介绍了 Privacy Sandbox 中的 Cookie 和存储分区变更(这是一个通过创建一系列新的 Web 平台 API 来弃用第三方 Cookie 的持续性项目),以及这些 API 在扩展程序中的运作方式。
现在可以搜索扩展程序示例
我们最近创建了一个页面,供您搜索 Chrome 扩展程序示例。搜索页面提供了多个选项。您可以使用搜索框在选段标题中搜索文字。您可以通过权限或扩展程序 API 限制搜索。借助额外的过滤条件,您可以将搜索范围限制为 API 或功能(用例)示例。
此新示例页面由 Google 夏季编程活动参与者 Xuezhou Dai 构建,他还贡献了多个新示例。您可以参阅他们在我们博客上发表的文章,了解他们在去年夏天的经历。
与之前一样,您仍然可以在 GitHub 上克隆或分叉我们的代码示例。
Chrome 118:对打开文件的 scheme 网址所做的更改
从 Chrome 118 开始,扩展程序需要在 chrome://extensions
页面中启用“允许访问文件网址”设置,才能使用 Tabs 或 Windows API 打开 file:// 架构网址。您可以通过调用 chrome.extension.isAllowedFileSchemeAccess()
以编程方式检查是否具有此访问权限。Firefox 已限制文件网址,Safari 支持此更改。如需了解详情,请参阅扩展程序 Google 群组中的帖子。
Chrome 117:扩大了对扩展程序 API 导航的网址保护范围
以前,通过扩展程序 API 调用 tabs.update()
、tabs.create()
和 windows.create()
触发的导航会针对某些 chrome:// 网址发出错误。此外,禁止使用 JavaScript 网址调用 tabs.update()
。在 117 版中,针对 JavaScript 网址的这些保护措施已扩展到 tabs.create()
方法,并且还在适用于上述所有方法的禁止网址列表中添加了一些额外的 chrome:// 网址。
改进了 declarativeNetRequest API 指南
chrome.declarativeNetRequest
API 通过指定声明式规则来屏蔽或修改网络请求。这样,扩展程序就可以修改网络请求,而无需拦截和查看其内容,从而为用户提供更高的隐私保护。而且使用起来也很棘手。有鉴于此,我们重新编写了指南,以便更清晰地说明如何实现声明式规则集。请点击上方的链接,阅读新版部分。
将您的 Google Analytics 账号与 Chrome 应用商店搭配使用
Chrome 应用商店与 Google Analytics 集成,因此除了在开发者信息中心查看数据外,您还可以查看 Chrome 应用商店商品详情的分析数据。如需了解详情,请参阅将 Google Analytics 账号与 Chrome 应用商店搭配使用。
Chrome 115:开发者工具默认会跳过内容脚本
默认情况下,注入的内容脚本会列入开发者工具的忽略列表。这不会影响断点,但这意味着系统会在调试期间跳过内容脚本,并会忽略这些脚本中的异常。在来源标签页中打开内容脚本后,如果此功能处于启用状态,系统会显示一个横幅通知,并提供从忽略列表中移除内容脚本的选项。如需关闭此行为,请打开 DevTools,依次前往设置和忽略列表。如需了解详情,请参阅开发者工具的新变化。
Chrome 116 Beta 版:无法在此处列出所有变化
Chrome 116 是扩展程序的重要版本。您现在可以程序化地打开侧边栏。借助新方法,您可以了解是否有处于活动状态的屏幕外文档。Service Worker 进行了多项改进。116 版进行了大量改进,因此我们撰写了一篇博文来介绍这些改进。Chrome 116 测试版于 7 月 19 日发布。
博文:Chrome 扩展程序的最新动态
我们刚刚发布了今年扩展程序的变更和改进概览。该博文介绍了今年的重要新功能,包括侧边栏 API、服务工件增强功能和屏幕外文档。您还可以抢先了解我们本季度的工作重点。该文章列出了更多信息,并提供了指向所有这些信息的链接。
新指南和示例:了解如何在 Chrome 扩展程序中使用 Google Analytics 4
我们发布了新的 Google Analytics 和地理位置指南和示例:
- 更新版 Google Analytics 指南,介绍如何在 Chrome 扩展程序中使用 Google Analytics 4。我们还在 GitHub 示例代码库中添加了一个可用的 Google Analytics 4 示例。如需了解与 Google Analytics 相关的相关代码,请参阅
google-analytics.js
。 - 新增了地理位置指南和三个示例,演示了如何在服务工件、内容脚本、弹出式窗口和侧边栏中访问地理位置信息。
Chrome 115:在 chrome.offscreen.createDocument() 中指定多个原因
现在,您可以在调用 chrome.offscreen.createDocument()
时指定多个 reason
枚举。如果要将屏幕外文档用于多种不同的用途,请使用此属性。浏览器会使用提供的原因来确定屏幕外文档的生命周期。
新工具:扩展程序更新测试工具
我们刚刚发布了扩展程序更新测试工具,这是一个本地扩展程序更新服务器,可用于在本地开发期间测试 Chrome 扩展程序的更新,包括权限授予。该工具会显示用户的更新流程,包括在用户授予任何新请求的权限之前,保持扩展程序停用状态。此工具对于模拟从 Manifest V2 更新为 Manifest V3 时请求的权限变更尤为有用。
Chrome 114:新的 Side Panel API
全新推出 Side Panel API,这是一种配套界面,可让用户在浏览内容的同时使用工具。如需了解详情,请参阅侧边栏 API 参考文档。此外,我们还在 GitHub 示例代码库中添加了许多侧边栏示例。我们还在新博文使用新版 Side Panel API 设计卓越的用户体验中详细介绍了侧边栏。我们还审核了质量指南政策和最佳实践,以便在创建优质侧边栏扩展程序方面提供进一步指导。
您的反馈对于打造此 API 至关重要;请在 chromium-groups 中分享您的想法和功能请求。我们会继续改进侧边栏 API,敬请关注最新动态。
新增了示例:扩展程序中的 WASM
我们提供了两个新示例,演示了如何在扩展程序中使用 WASM:
- 在 Manifest V3 中使用 WASM介绍了添加 WASM 模块的一般方法。
- 在 Manifest V3 中将 WASM 用作模块介绍了如何在模块中使用 WASM。
特别感谢 GitHub 贡献者 @daidr 提供这些示例。
更新了 Manifest V3 迁移指南
我们更新了Manifest V3 迁移指南的已知问题部分,在宣布新的 Manifest V2 弃用时间表之前,列出了我们打算解决的扩展程序平台差异。
使用清单 V3 录制音频和视频
我们刚刚发布了一篇名为录音和屏幕截图的新文章,其中介绍了如何在 Manifest V3 中录制标签页、窗口或屏幕的音频或视频。本文介绍了涉及 chrome.tabCapture
API 和 getDisplayMedia()
函数的多种录制方法。
Chrome 114:提高了 storage.local 配额
我们已将 storage.local
媒体资源的配额提高到约 10 MB。这是在 Web 扩展程序社区群组中达成的共识。这使得 storage.local
与 Chrome 112 中更改的 storage.session
保持一致。
新的扩展程序 Service Worker 教程和帮助
Service Worker 是 Chrome 扩展程序不可或缺的一部分。我们刚刚发布了一篇教程,介绍了注册、调试和与服务工作线程互动的基础知识。我们还新增了服务工件指南,更详细地介绍了重要概念。我们将在未来几个月内扩展此部分。
有关网店违规问题的更多问题排查提示
为帮助您在 Chrome 应用商店中发布应用,我们在以下两个方面添加了新指南。最基本的功能指南的核心是向用户提供实用功能并丰富其浏览体验。联属营销广告指南旨在让用户知道扩展程序使用联属营销链接或代码进行创收,并要求用户在添加之前执行操作,以便他们对此有一定程度的控制。
扩展程序清单转换器的新说明
我们重写了扩展程序清单转换器的 README,以便您更轻松地了解运行该工具后需要执行的操作。该转换工具可帮助您将基于 Manifest V2 构建的扩展程序迁移到 Manifest V3。新版自述文件使用与迁移指南核对清单中字词非常接近的字词来介绍该工具的用途。转换器并非万能,但可以消除许多不需要人工判断的任务。
Chrome 113:新增了屏幕外文档的原因
我们在 Offscreen Documents API 中添加了两种新的原因类型。使用 LOCAL_STORAGE
访问 Web 平台的 localStorage API。创建网页工作器时,请使用 WORKER
。
Google Analytics 4 现已在开发者信息中心推出
Chrome 应用商店开发者信息中心现已支持 Google Analytics 4 (GA4)。我们简化了 Google Analytics 的设置,并简化了为集团发布商管理访问权限的流程。如果您之前使用 Google Universal Analytics 跟踪商家信息活动,则需要在 2023 年 7 月 1 日之前采取行动,以确保您能继续接收有关商家信息的数据。如需了解详情,请参阅 Chromium 扩展程序 Google 群组上的帖子。
File Handling API 现已面向 ChromeOS 推出
在 ChromeOS 的 Canary 渠道中,File Handler API 可用于 112 和 113 版的实验。它可让 ChromeOS 上的扩展程序打开具有指定 MIME 类型和文件扩展名的文件。如需实现文件处理,请向 manifest.json
添加一组规则。此功能的运作方式与 Progressive Web App 相同。如需了解详情,请参阅本网站上其他位置的这篇文章。
如需启用文件处理功能,请执行以下操作:
- 从 112 开始,使用
--enable-features=ExtensionWebFileHandlers
标志启动 Chrome - 从 113 版开始,将
os://flags/#extension-web-file-handlers
粘贴到 Chrome 万能搜索框中,然后从下拉菜单中选择“已启用”。
我们希望于 6 月底在 Chrome 115 中推出此功能。请查看此空间的更新。
新增了动态声明和程序化注入示例
我们为 chrome.scripting
API 构建了一个新示例。该演示演示了动态声明(在运行时注册内容脚本)和程序化注入(在已打开的标签页中执行脚本)。
新示例:声明式网络请求用例
三个新示例演示了声明式网络请求 API。每个示例都演示了单个用例的实现。第一种方法展示了如何屏蔽 Cookie。其余两个示例展示了屏蔽和重定向网址。
Chrome 112:提高了 storage.session 配额
从 Chrome 112 开始,storage.session
媒体资源的配额已增加到约 10 MB。此决定已在 Web Extensions 社区群组中达成一致:https://github.com/w3c/webextensions/issues/350
Chrome 109:屏幕外文档
屏幕外文档现已在 Manifest V3 扩展程序中推出。这些 API 支持与 DOM 相关的功能和 API,有助于从后台页面转换为扩展程序 Service Worker。如需了解详情,请阅读博文。
Chrome 110:扩展程序是否已启用
chrome.action.isEnabled()
方法可通过编程方式检查是否已为特定标签页启用扩展程序。这样,您就不必维护标签页的启用状态。此新方法接受标签页 ID 和对回调的引用,并返回一个布尔值。它有一个限制:使用 chrome.declarativeContent
创建的标签页始终返回 false。
(chrome.action
命名空间最近推出了用于控制扩展程序徽章外观的新方法。如需了解详情,请参阅设置徽章颜色。)
Chrome 110:Service Worker 空闲超时时间发生变化
以前,扩展程序 Service Worker 经常会在五分钟后关闭。我们更改了此行为,使其更接近于网站上的服务工件生命周期。扩展程序服务工件会在处于非活动状态 30 秒后或单个活动的处理时间超过 5 分钟后关闭。如需了解详情,请参阅延长扩展程序服务工作器的生命周期。
博文:暂停逐步淘汰 Manifest V2
Manifest V2 弃用时间表正在审核中,原定于 2023 年初进行的实验将推迟。如需了解详情,请参阅 chromium-extensions Google 群组中的更新。
Chrome 110:设置标记颜色
chrome.action
命名空间提供了两个新方法,可让您更好地控制扩展程序徽章的外观。借助 setBadgeTextColor()
和 getBadgeTextColor()
方法,扩展程序可以更改和查询其工具栏图标的标记文本颜色。与 setBadgeBackgroundColor
和 getBadgeBackgroundColor
搭配使用时,这些新方法可让您强制执行设计和品牌一致性。
博文:详细了解如何过渡到 Manifest V3
我们明确了 Manifest V2 弃用时间表。我们还更新了 Manifest V2 支持时间表,以反映这项信息。
文档更新:迁移到 Manifest V3 时的已知问题
我们整理了一份目前正在开发的主要功能和存在的 bug 列表。本页面旨在帮助开发者更好地了解该平台的当前状态,以及在为未来做准备时可以着重关注哪些功能。
Chrome 应用商店:移除了“大型宣传功能块”图片上传功能
Chrome 应用商店已从开发者信息中心的“商品详情”标签页中移除“大型宣传功能块”上传界面。此更改不会影响最终用户体验,因为这些图片并未在消费者界面中使用。如需了解详情,请参阅这篇 chromium-extensions 博文。
Chrome 106:允许 file:// 网址上的网页访问可访问的 Web 资源
根据 crbug.com/1219825#c11,沙盒化 iframe 和动态导入等不透明源也应能够访问可通过 Web 访问的资源。
Chrome 106:修复了导致某些异步 API 函数存在错误最终参数的 bug
以前,调用异步 API 的 Manifest V3 可以提供无效的最终参数,而 Chrome 不会出错。通过此修复程序,Chrome 现在会正确出错并报告没有匹配的签名。建议开发者在 Canary 上检查其扩展程序是否存在任何错误,以防他们不小心为 API 调用使用了错误的签名,而此调用会因此 bug 修复而中断。
博文:Chrome 应用商店分析功能焕然一新
Chrome 应用商店为 Chrome 应用商店开发者信息中心改进了商品分析体验。新版信息中心更易于一目了然,并会在前面汇总最实用的信息。如需了解详情,请参阅博文。
Chrome 105:Identity API 的 promise
Identity API 中的函数现在支持基于 Promise 的调用。这会导致 identity.getAuthToken()
的表面发生细微变化,其中将异步返回设置为基于 Promise 的调用将在单个对象上将“token”和“grantedScopes”作为参数(而回调版本会将它们作为回调的单独参数接收)。
Chrome 104:适用于 Manifest V3 的新 Favicons API
Manifest V3 扩展程序现在可以使用新的网址格式 chrome-extension://<id>/_favicon/
访问 Favicon,其中 chrome://favicons
API。如需了解详情,请参阅 Favicon API 文档。
文档更新:开发者交易商/非交易商信息披露
添加了交易者/非交易者开发者身份标识,以便开发者准确地自行声明其交易者/非交易者身份。
Chrome 103:Manifest V3 中的 Wasm 需要 wasm-unsafe-eval
默认情况下,Chrome 不再向扩展程序授予 script-src: wasm-unsafe-eval
权限。现在,使用 WebAssembly 的扩展程序必须在其 content_security_policy
声明中明确将此指令和值添加到 extension_pages
。
Chrome 103:更改 MV3 快捷键会立即生效
现在,在 chrome://extensions/shortcuts
上更改 Manifest V3 扩展程序的键盘快捷键时,更新会立即应用。以前,必须重新加载扩展程序,更改才能生效。
Chrome 102:主世界中的动态内容脚本
动态注册的内容脚本现在可以指定要将资源注入到的世界。如需了解详情,请参阅 scripting.registerContentScripts()
。
Chrome 102:新增了清单字段“optional_host_permissions”
Manifest V3 扩展程序现在可以在 manifest.json 中指定 optional_host_permissions
键。这样,Manifest V3 扩展程序就可以像 Manifest V2 扩展程序使用 optional_permissions
键一样,为主机声明可选的匹配模式。
Chrome 102:scripting.executeScript() 中的 injectImmediately 属性
chrome.scripting.executeScript()
现在接受其 injection
参数上的可选 injectImmediately
属性。如果存在且设置为 true,脚本将尽快注入到目标中,而不是等待 document_idle
。请注意,这并不保证脚本会在页面加载之前注入,因为在进行 API 调用时,页面会继续加载。
Chrome 102:Manifest V3 中的 Omnibox API 支持
Omnibox API 现在可在基于服务工件的扩展程序中使用。以前,由于对 DOM 功能的内部依赖项,此 API 的某些方法会在调用时抛出异常。
Chrome 102:Manifest V3 CSP 中允许使用 wasm-unsafe-eval
Manifest V3 扩展程序现在可以在其 content_security_policy
声明中添加 wasm-unsafe-eval
。这项变更使 Manifest V3 扩展程序可以使用 WebAssembly。
Chrome 102:新的 storage.session API
Manifest V3 扩展程序现在可以在内存存储空间 storage.session 中使用。
文档更新:Chrome 应用商店商品发现
Chrome 应用商店中的发现功能概要介绍了用户如何在 Chrome 应用商店中查找商品,以及编辑团队如何选择要精选的商品。
Chrome 101:改进了 declarativeNetRequest 网域条件
declarativeNetRequest 规则条件已更新,以允许扩展程序根据请求的“request”和“initiator”网域更好地定位请求。相关的条件属性包括 initiatorDomains
、excludedInitiatorDomains
、requestDomains
和 excludedRequestDomains
。另请参阅此 chromium-extensions 会话。
Chrome 100:解决了新创建的标签页上 scripting.executeScript() 的问题
修复了一个长期存在的问题,即在新创建的标签页或窗口上调用 scripting.executeScript()
可能会失败。
Chrome 100:本机消息传递端口可使服务工作线程保持活跃状态
在扩展程序的服务工件中使用 chrome.runtime.connectNative()
连接到原生消息传递主机后,只要端口处于打开状态,服务工件应会保持活跃状态。
Chrome 100:omnibox.setDefaultSuggestion() 支持 promise 和回调
omnibox.setDefaultSuggestion()
方法现在会返回一个 promise 或接受一个回调,以便开发者确定何时正确设置了建议。
Chrome 100:扩展程序服务工作器中支持 i18n.getMessage()
扩展程序服务工件上下文现在支持 chrome.i18n.getMessage()
API。
Chrome 99:Canary 中的 match_origin_as_fallback
内容脚本现在可以指定 match_origin_as_fallback
键,以注入与匹配的帧相关的帧,包括包含 about:
、data:
、blob:
和 filesystem:
网址的帧。如需了解详情,请参阅内容脚本文档。
Chrome 99:在 Canary 中为 file: 架构添加了扩展程序服务工作线程支持
基于服务工件的 Manifest V2 和 Manifest V3 扩展程序现在可以使用 Fetch API 请求 file:
架构网址。如需访问 file:
架构网址,用户仍需要在 chrome://extensions
页面中为扩展程序启用“允许访问文件网址”设置。
Chrome 99:Canary 版中对消息传递 API 的 promise 支持
为适用于 Manifest V3 的扩展程序添加了对 tabs.sendMessage
、runtime.sendMessage
和 runtime.sendNativeMessage
的 Promise 支持。
文档更新:Chrome 应用商店审核文档
添加了一个新的参考页面,其中概述了 Chrome 应用商店审核流程,并说明了如何处理开发者计划政策违规处置。
Chrome 98:scripting.executeScript() 和 scripting.insertCSS() 接受多个文件
Scripting API 的 executeScript()
和 insertCSS()
方法现在接受多个文件。以前,这些方法需要使用包含单个文件条目的数组。
文档更新:审核违规问题问题排查更新
排查 Chrome 应用商店违规问题页面已更新,为开发者提供了有关常见拒批原因的更详细指南。
Chrome 96:将对 promise 的支持扩展到另外 27 个 API
与之前的任何版本相比,此版本包含的 Promise 更新要多得多。更新包括通用扩展程序 API 和 ChromeOS 专用扩展程序 API。如需了解详情,请展开即可下部分。
Extensions API
现在,许多 API 都支持在清单 V3 中使用 Promise。
chrome.browsingData
chrome.commands
chrome.contentSettings
chrome.debugger
chrome.downloads
chrome.enterprise.hardwarePlatform
chrome.fontSettings
chrome.history
chrome.instanceID
chrome.permissions
chrome.processes
chrome.search
chrome.sessions
chrome.topSites
此外,使用 ChromeSetting
原型的 API 现在也支持 promise。以下 API 会受到此变更的影响。
ChromeOS API
chrome.certificateProvider
chrome.documentScan
chrome.enterprise.deviceAttributes
chrome.enterprise.networkingAttributes
chrome.fileBrowserHandler
chrome.fileSystemProvider
chrome.loginState
chrome.printingMetrics
chrome.wallpaper
Chrome 96:动态内容脚本
chrome.scripting
API 现在支持在运行时注册、更新、取消注册和获取内容脚本列表。以前,内容脚本只能在扩展程序的 manifest.json 中静态声明,或者在运行时使用 chrome.scripting.executeScript()
以编程方式注入。
文档更新:Manifest V2 支持时间表
我们已在这篇博文中宣布了从 Manifest V2 迁移到 V3 的时间表,并发布了更详细的时间表页面。
Chrome 96:declarativeNetRequestWithHostAccess 权限
借助新的 declarativeNetRequestWithHostAccess
权限,扩展程序可以在扩展程序拥有主机权限的网站上使用 chrome.declarativeNetRequest
API。这还支持使用 webRequest
、webRequestBlocking
和网站专用主机权限的现有清单 V2 扩展程序迁移到 chrome.declarativeNetRequest
API,而无需用户批准新的权限。
Chrome 95:直接将脚本注入网页
chrome.scripting
API 的 executeScript()
方法现在可以直接将脚本注入页面的主世界。以前,扩展程序只能直接注入到扩展程序的隔离世界中。如需详细了解隔离的虚拟世界,请参阅内容脚本文档。
Chrome 95:对 Storage API 的 promise 支持
chrome.storage
API 的 Manifest V3 版本中的各方法现在会返回 Promise。
政策更新:强制执行两步验证
我们更新了 2021 年 6 月 29 日发布的政策更新博文,更正了两步验证部署时间表。
Chrome 94:声明式网络请求静态规则集更改
chrome.declarativeNetRequest
现在支持一次指定最多 50 个静态规则集 (MAX_NUMBER_OF_STATIC_RULESETS),并启用最多 10 个规则集 (MAX_NUMBER_OF_ENABLED_STATIC_RULESETS)。
Chrome 93:支持跨源隔离
现在,Manifest V2 和 Manifest V3 扩展程序都可以选择启用跨源隔离。此功能可限制哪些跨源资源可以加载扩展程序的网页,并支持使用 SharedArrayBuffer
等低级 Web 平台功能。从 Chrome 95 开始,用户必须选择启用此功能。
政策更新:开发者计划政策更新
Chrome 应用商店开发者计划政策已更新,其中对欺骗性安装手段、垃圾内容和重复性内容政策进行了阐释。此次更新还新增了一项在 Chrome 应用商店中发布应用的两步验证要求。如需了解详情,请参阅博文。
博文:Manifest V3 中的扩展程序操作
Chrome 扩展程序多年来一直使用 chrome.browserAction
和 chrome.pageActions
API,但清单 V3 将这两个 API 都替换成了通用的 chrome.actions
API。本文将探讨这些 API 的历史以及 Manifest V3 中的变化。阅读帖子。
博文:Chrome.scripting 简介
chrome.scripting
API 是一款全新的 Manifest V3 API,专注于脚本编写。在本文中,我们将深入探讨此次变更的动机,并详细了解其新功能。阅读帖子。
Chrome 92:模块服务工支持
Chrome 现在支持在服务工件中使用 JavaScript 模块。如需在清单中指定模块,请执行以下操作:
"background": {
"service_worker": "script.js",
"type": "module"
}
这会将 worker 脚本作为 ES 模块加载,以便您在 worker 的脚本中使用 import
关键字导入其他模块。
Chrome 91:chrome.action.getUserSettings()
借助新的 chrome.action.getUserSettings()
方法,扩展程序可以确定用户是否已将扩展程序固定到主工具栏。
Chrome 90:chrome.scripting.removeCSS()
借助新的 chrome.scripting.removeCSS()
方法,扩展程序可以移除之前通过 chrome.scripting.insertCSS()
插入的 CSS。它取代了 chrome.tabs.removeCSS()
。
Chrome 90:从 scripting.executeScript() 返回 promise
chrome.scripting.executeScript()
现在支持返回 promise。如果脚本执行的结果值为 promise,Chrome 将等待 promise 得到解决并返回其结果值。
Chrome 90:chrome.scripting.executeScript() 结果包含 frameId
从 chrome.scripting.executeScript()
返回的结果现在包含 frameId。frameId
属性表示结果来自哪个帧,让扩展程序在多个帧中注入时能够轻松将结果与各个帧相关联。
Chrome 89:用于管理标签页分组的新 API
借助新的 chrome.tabGroups
API 和 chrome.tabs
中的新功能,扩展程序可以读取和操作标签页分组。需要使用 Manifest V3。
Chrome 89:可自定义的网络访问资源权限
Manifest V3 中的可通过网络访问的资源定义已更改,以允许扩展程序根据请求者的来源或扩展程序 ID 限制资源访问权限。
博文:扩展程序清单转换器
Chrome 扩展程序团队已开源“扩展程序清单转换器”,这是一个 Python 工具,可自动执行将扩展程序转换为 Manifest V3 的一些机械性操作。请参阅公告博文,并从 GitHub 获取。
Chrome 88:Manifest V3 正式版
Manifest V3 是扩展程序平台的重大更新;如需简要了解新增和更改的功能,请参阅 Manifest V3 概览。扩展程序目前可以继续使用 Manifest V2,但在不久的将来,我们将逐步淘汰它。我们强烈建议您为所有新扩展程序使用 Manifest V3,并尽快开始将现有扩展程序迁移到 Manifest V3。