经常查看此页面,了解 Chrome 扩展程序、扩展程序文档或相关政策或其他方面的变化。您会在 Extensions Google 网上论坛中找到发布的其他通知。Chrome 时间表中列出了稳定版和 Beta 版发布日期。
视频:信任与安全团队访谈
Chrome 扩展程序开发技术推广团队与信任与安全团队进行了交流,该团队会负责 Chrome 应用商店的审核工作,以提出您的问题。观看完整视频
博文:Manifest V2 逐步停用
自 6 月 3 日起,在 Chrome 测试版、开发者版和 Canary 版中,如果用户仍安装 Manifest V2 扩展程序,则部分用户在访问其扩展程序管理页面 (chrome://extensions) 时会看到警告横幅,告知他们安装的某些 (Manifest V2) 扩展程序很快将不再受支持。如需了解详情,请参阅官方公告
侧边栏界面更新
我们最近对侧边栏界面进行了一些更改,包括添加图钉图标和移除全局侧边栏图标。如需了解详情,请访问 PSA,并查看更新后的文档和示例。
博文:2024 年 Google I/O 大会上的 Chrome 扩展程序
另一届 Google I/O 大会即将拉开帷幕,我们介绍了所有激动人心的扩展程序更新!请前往 YouTube 查看完整视频并阅读我们的博文,了解部分亮点。
跳过对符合条件的声明性网络请求变更的审核
Chrome 应用商店现在允许您在使用声明性 Net Request API 时跳过对符合条件的更改的审核。如需详细了解资格要求以及如何选择启用,请参阅 Chrome 应用商店文档。
Chrome Web Store API 中提供了 deployPercentage
我们最近更新了 Chrome Web Store API 文档,在其中添加了有关 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 Extension Engine 团队的这篇博文中,我们探讨了测试扩展 Service Worker 的问题。在 Manifest V2 中,扩展程序位于后台页面中,而在扩展程序的整个生命周期内,这些页面处于唤醒状态。Manifest V3 改用 Service Worker,从设计上讲,Service Worker 在不需要时关闭,从而节省资源。这就带来了一些特定的测试挑战。这篇博文介绍了 eyeo 如何应对这些挑战。
Chrome 123:现在,闹钟会在设备处于休眠状态时运行
当设备进入休眠状态时,使用 chrome.alarms
API 设置的闹钟不再延迟。当设备唤醒时,无论错过了多少次闹钟,闹钟都会触发一次。例如,假设闹钟设置为每小时响一次一次,且闹钟所在的设备在凌晨 00:55 至凌晨 2:05 处于休眠状态,那么只有凌晨 2:00 的闹钟会触发 onAlarm
事件。它会尽可能在凌晨 2:00 左右触发,并且在设备唤醒时(如果处于休眠状态)会立即触发。
此更改使 Chrome 与网络扩展程序社区群组中商定的行为保持一致。
博文:使用扩展程序消息端口对 bfcache 行为进行更改
往返缓存 (bfcache) 是一项浏览器优化,可实现即时的往返导航。从 Chrome 123 开始,当某个具有开放扩展程序端口的网页存储在 bfcache 中时,消息通道会关闭,这意味着系统不会向该网页发送任何消息。
因此,扩展程序脚本应监听 onDisconnect
等生命周期事件,并在从 BFCache 恢复页面时设置新的连接。
如需了解详情并查看示例代码,请参阅使用扩展消息端口时 BFCache 行为的变化。
Chrome 122:异步扩展程序 API 的 Promise 支持
我们已经为所有异步扩展 API 方法实现了 Promise 支持。这是为了通过改善处理异步操作的人体工学设计来对 API 方法进行现代化改造。少数方法(例如 desktopCapture.chooseDesktopMedia()
)继续仅支持回调,因为它们的当前 Surface 与 promise 不兼容。为了实现向后兼容性,仍支持回调。如果您发现某个 Promise 失败,请提交 bug。
关于实时通信的新指南
我们刚刚发布了关于扩展程序中实时选项的指南。实时更新提供了从服务器直接到扩展程序安装的即时通信路径。此外,我们还介绍了如何使用 chrome.gcm、Web 推送。
新指南和示例:测试 Service Worker 的终止
我们刚刚发布了有关如何使用 Puppeteer 测试 Service Worker 终止的指南。随附的示例在 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 扩展程序能够以 30 秒的延迟或 30 秒的周期使用 chrome.alarms
API,而不是要求将值设为 60 秒或更长。
博文:恢复向 Manifest V3 的过渡
Manifest V2 支持时间表已更新。如需了解详情,请参阅我们的 2023 年 11 月博文。
博文:对 Manifest V3 中的内容过滤支持进行改进
请阅读我们的新博文,了解我们如何改进 declarativeNetRequest API。
博文:Chrome 120 for Extensions 包含的新变化
Chrome 120 Beta 版是最近发布的。有关与扩展程序开发者相关的重要更新的摘要,请阅读我们的新博文:Chrome 120 扩展程序的新功能。此版本也是一个主要里程碑,因为它从关键平台差异列表中移除了最后两项(userScripts、ChromeOS 上的文件处理程序)。
PSA:开发者信息中心内对隐私权政策网址的处理方式变更
现在,开发者信息中心内的隐私权政策是在商品级添加的。这样您就可以为每件商品提供不同的隐私权政策。如需详细了解此变更,请参阅我们的 PSA。
视频:与 Matt Frisbie 聊天
我们最近在 Chrome for Developers 的 YouTube 频道上发布了一个新视频,与 Google 开发者专家和作家 Matt Frisbie 聊聊。点击此处观看。
关于测试扩展程序的新指南
我们刚刚发布了有关如何为扩展程序编写自动化测试的新指南,包括如何编写单元测试,以及有关端到端测试的常规指南和教程。
博文:Chrome 扩展程序中发生的新变化 - 2023 年 10 月
我们刚刚发布了第二期 Chrome 扩展程序最新动态。这篇博文讨论了扩展程序团队在过去几个月里一直做的工作,包括解决 Service Worker 稳定性问题,以及在弥合所有 MV3 平台差距方面取得良好进展。我们还分享了即将发布的令人兴奋的 API 版本,例如 Reading List API 和 User Scripts API。
提高了声明性 Net Request API 中的静态规则集限制
根据网络扩展程序社区论坛中的反馈,我们计划将启用的静态规则集的上限从 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 扩展程序社区小组中的讨论。Firefox 和 Safari 已经实施了类似的更改。
关于 Cookie 和网络存储 API 的文档
我们发布了关于 Cookie 和网络存储 API 在 Chrome 扩展程序中的运作方式的新指南。 其中包含有关 Privacy Sandbox 中的 Cookie 和存储分区更改的详细信息。Privacy Sandbox 是一项正在进行的项目,旨在通过创建一系列新的网络平台 API 来废弃第三方 Cookie,以及有关这些 API 在扩展程序中的工作原理的详细信息。
现在可以搜索扩展程序示例了
我们最近创建了一个页面,以便您搜索 Chrome 扩展程序示例。搜索页有多个选项。您可以通过搜索框搜索示例标题中的文字。您可以按权限或扩展程序 API 限制搜索。借助额外的过滤条件,您可以将搜索范围限制为 API 示例或功能(用例)示例。
这个新的示例网页是由 Google 编程之夏参与者 Xuezhou Dai 创建的,他也贡献了几个新示例。您可以在我们博客上的博文中了解他们今年夏天的经历。
与以前一样,GitHub 上仍然提供我们的代码示例,用于克隆或分支。
Chrome 118:有关打开文件“协议网址”的变化
从 Chrome 118 开始,扩展程序需要在 chrome://extensions
页面中启用“允许访问文件网址”设置,才能使用标签页或 Windows API 打开 file:// 架构网址。您可以通过调用 chrome.extension.isAllowedFileSchemeAccess()
以编程方式检查此访问权限。Firefox 已限制文件网址,Safari 也支持这项更改。有关详情,请参阅扩展程序 Google 网上论坛中的帖子。
Chrome 117:扩展了针对扩展程序 API 导航的网址保护功能
之前,通过针对 tabs.update()
、tabs.create()
和 windows.create()
的扩展程序 API 调用触发的导航会针对某些 chrome:// 网址发出错误。此外,还禁止使用 JavaScript 网址调用 tabs.update()
。在 117 版中,针对 JavaScript 网址的这些保护措施已扩展为 tabs.create()
方法,并且一些额外的 chrome:// 网址已添加到禁止网址列表中,这些网址适用于前面提到的所有方法。
改进了针对 declarativeNetRequest API 的指南
chrome.declarativeNetRequest
API 通过指定声明性规则来屏蔽或修改网络请求。这样一来,扩展程序可以在不拦截网络请求和查看其内容的情况下修改网络请求,从而更好地保护用户隐私。而且使用起来也很难。考虑到这一点,我们重新编写了该指南,我们认为它能够更清晰地说明如何实现声明式规则集。请点击上面的链接阅读新章节。
使用您的 Google Analytics(分析)账号访问 Chrome 应用商店
Chrome 应用商店实现了与 Google Analytics(分析)的集成,这样,除了开发者信息中心内提供的视图之外,您还可以查看 Chrome 应用商店商品详情的分析数据。有关详情,请参阅在 Chrome 应用商店中使用 Google Analytics(分析)账号。
Chrome 115:默认情况下,开发者工具会逐步覆盖内容脚本
注入的内容脚本现在默认位于开发者工具忽略列表中。这并不影响断点,但意味着内容脚本将在调试期间逐步进行,并且来自这些脚本的异常会被忽略。在来源标签页中打开内容脚本时,您会看到一个横幅(如果此设置已开启),并提供一个横幅,以便您从忽略列表中移除您的内容脚本。要关闭此行为,请打开开发者工具,然后依次前往设置和忽略列表。如需了解详情,请参阅 开发者工具的新变化。
Chrome 116 Beta 版:无法满足需求
Chrome 116 是一个大型扩展程序版本。您现在可以以编程方式打开侧边栏。借助一种新方法,您可以了解是否有处于活动状态的屏幕外文档。Service Worker 取得了多项改进。116 个方面有充分的改进,我们已经撰写了博文来介绍这些方面。自 7 月 19 日起,Chrome 116 进入 Beta 版阶段。
博文:Chrome 扩展程序发生的情况
我们刚刚发布了有关今年附加信息的变化和改进的概述。这篇博文讨论了今年的一些重大新功能,包括 Side Panel API、Service Worker 增强功能和屏幕外文档。您还可以了解我们本季度的工作进度。此文章列出了更多内容,并提供了指向所有内容的链接。
新指南和示例:了解如何在 Chrome 扩展程序中使用 Google Analytics(分析)4
我们发布了新的 Google Analytics(分析)和地理定位指南和示例:
- 新版 Google Analytics(分析)指南,介绍了如何在 Chrome 扩展程序中使用 Google Analytics(分析)4。此外,我们还向 GitHub 示例代码库中添加了可正常使用的 Google Analytics(分析)4 示例。请访问
google-analytics.js
,查看与 Google Analytics(分析)相关的代码。 - 新增了地理定位指南和三个示例,演示了如何在 Service Worker、内容脚本、弹出式窗口和侧边栏中访问地理定位。
Chrome 115:在 chrome.offscreen.createDocument() 中指定多个原因
现在,您可以在调用 chrome.offscreen.createDocument()
时指定多个 reason
枚举。当屏幕外文档要用于多种不同目的时,请使用此方式。浏览器会根据所提供的原因确定屏幕外文档的生命周期。
新工具:扩展程序更新测试工具
我们刚刚发布了扩展程序更新测试工具,这是一款本地扩展程序更新服务器,可用于在本地开发过程中测试 Chrome 扩展程序的更新,包括权限授予。该工具会显示用户的更新流程,包括将扩展程序保持停用状态,直到用户授予新请求的所有权限。在将扩展程序从 Manifest V2 更新到 Manifest V3 时,此工具特别适合用于模拟所请求的权限更改。
Chrome 114:新的侧边栏 API
推出了新的 Side Panel API,这是一个辅助界面,可让用户在浏览内容旁边使用各种工具。如需了解详情,请参阅 Side Panel API 参考文档。此外,我们还向 GitHub 示例代码库添加了许多侧边栏示例。我们还在新博文利用 New Side Panel API 设计出色的用户体验中分享了关于侧边栏的更多信息。此外,我们还审核了我们的质量指南政策和最佳实践,就如何创建优质侧边栏扩展程序提供了进一步指导。
您的反馈对于构建此 API 非常重要;请在 chromium-groups 中分享您的想法和功能请求。我们会继续改进 Side Panel API,敬请关注最新动态。
新示例:扩展程序中的 WASM
以下两个新示例演示了如何在扩展程序中使用 WASM:
- 在 Manifest V3 中使用 WASM 介绍了包含 WASM 模块的通用方法。
- 在 Manifest V3 中使用 WASM 作为模块介绍了如何在模块中使用 WASM。
特别感谢 GitHub 贡献者 @daidr 提供这些示例。
更新了 Manifest V3 迁移指南
我们更新了 Manifest V3 迁移指南的已知问题部分,添加了一份经过更新的扩展程序平台缺口列表,我们打算在宣布新的 Manifest V2 弃用时间表之前弥补这些漏洞。
使用 Manifest V3 录制音频和视频
我们刚刚发布了一篇名为录音和屏幕截图的新文章,其中介绍了如何在 Manifest V3 中的标签页、窗口或屏幕中录制音频或视频。本文介绍了多种涉及 chrome.tabCapture
API 和 getDisplayMedia()
函数的录制方法。
Chrome 114:增加了 storage.local 配额
我们已将 storage.local
资源的配额增加到约 10 MB。这是在 Web Extensions 社区小组中同意的。这会使 storage.local
与 Chrome 112 中已更改的 storage.session
保持一致。
新的扩展 Service Worker 教程和帮助
Service Worker 是 Chrome 扩展程序不可或缺的一部分。我们刚刚发布了一个教程,介绍了有关注册、调试以及与 Service Worker 交互的基础知识。我们还添加了新的 Service Worker 指南,更详细地说明重要概念。我们将在未来几个月内扩展此部分。
针对应用商店违规行为的更多问题排查提示
为帮助在 Chrome 应用商店发布方面,我们在两个方面添加了新的指南。最基本的功能指南的重点在于,如何为用户提供好处并丰富他们的浏览体验。联属营销广告指南旨在让用户了解使用联属营销链接或代码进行变现的附加信息,并通过要求用户在添加附加信息之前执行操作来为其提供一定程度的控制权。
关于 Extension Manifest Converter 的新说明
我们重新编写了 Extension Manifest Converter 的 README 文件,以便您更轻松地了解运行该工具后需要执行的操作。此转换器可帮助将基于 Manifest V2 构建的扩展程序迁移到 Manifest V3。新的 README 文件介绍了该工具使用与迁移指南核对清单中字词相匹配的字词的功能。虽然转化器无法执行所有操作,但可以消除许多不需要人工判断调用的任务。
Chrome 113:使用屏幕外文档的新原因
我们在 Offscreen Documents API 中添加了两种新的原因类型。使用 LOCAL_STORAGE
访问 Web 平台的 localStorage API。创建 Web Worker 时使用 WORKER
。
Google Analytics(分析)4 现已位于开发者信息中心内
Chrome 应用商店开发者信息中心现已支持 Google Analytics(分析)4 (GA4)。我们简化了 Google Analytics(分析)的设置,并使群组发布者的访问权限管理变得更简单。如果您之前使用 Google Universal Analytics 跟踪商品详情活动,则需要在 2023 年 7 月 1 日之前采取行动,以确保继续收到有关商品详情的数据。有关详情,请参阅 Chromium 扩展程序 Google 网上论坛上的帖子。
File Handling API 现已登陆 ChromeOS
File Handler API 可在 ChromeOS 中的 Canary 版本 112 和 113 中开展实验。它可让 ChromeOS 上的扩展程序打开具有指定 MIME 类型和文件扩展名的文件。如需实现文件处理,请向 manifest.json
添加一组规则。此功能的工作方式与渐进式 Web 应用相同。如需了解详情,请参阅本网站上其他地方的这篇文章。
如需启用文件处理功能,请执行以下操作:
- 从 Android 112 开始,使用
--enable-features=ExtensionWebFileHandlers
标志启动 Chrome(从 Android 112 开始) - 从 113 版开始,请将
os://flags/#extension-web-file-handlers
粘贴到 Chrome 的多功能框中,然后从下拉菜单中选择“已启用”。
我们希望在 6 月底在 Chrome 115 中推出此功能。请关注此空间了解最新动态。
新示例:动态声明和程序化注入
我们为 chrome.scripting
API 构建了一个新示例。它演示了动态声明(在运行时注册内容脚本)和程序化注入(即在已打开的标签页中执行脚本)。
新示例:声明性网络请求用例
发布了三个新示例,演示了 Declarative Net Request 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 扩展程序中提供屏幕外文档。这些库通过提供对 DOM 相关功能和 API 的支持,帮助从后台页面转换到扩展 Service Worker。如需了解详情,请阅读此博文。
Chrome 110:是否启用了扩展程序
chrome.action.isEnabled()
方法会以程序化方式检查是否已针对特定标签页启用某个扩展程序。这样,您便无需保持标签页的启用状态。这个新方法接受一个标签页 ID 和一个对回调的引用,然后返回一个布尔值。它有一个限制:使用 chrome.declarativeContent
创建的标签页始终返回 false。
(chrome.action
命名空间最近添加了一些新方法来控制扩展程序标记的外观。如需了解详情,请参阅设置标志颜色。)
Chrome 110:Service Worker 空闲超时时间的变化
以前,扩展 Service Worker 经常在五分钟标记时关闭。我们已对此行为进行了更改,使其更接近 Web 上的 Service Worker 生命周期。如果处于非活动状态的时间达到 30 秒,或者处理单个活动的时间超过 5 分钟,则扩展程序 Service Worker 将关闭。如需了解详情,请参阅更长的扩展 Service Worker 生命周期。
博文:暂停 Manifest V2 逐步淘汰
我们正在审核 Manifest V2 弃用时间表,并推迟原定于 2023 年初开展的实验。如需了解详情,请参阅 chromium-extensions Google 网上论坛中的更新内容。
Chrome 110:设置标记颜色
chrome.action
命名空间有两个新方法,可让您更好地控制外观扩展标记。借助 setBadgeTextColor()
和 getBadgeTextColor()
方法,扩展程序可以更改和查询其工具栏图标的标志文本颜色。与 setBadgeBackgroundColor
和 getBadgeBackgroundColor
搭配使用时,这些新方法可让您确保设计和品牌一致性。
博文:有关向 Manifest V3 过渡的更多详情
我们阐明了 Manifest V2 弃用时间表。Manifest V2 支持时间表也已更新,以反映此信息。
文档更新:迁移到 Manifest V3 时的已知问题
我们整理了目前在开发的主要功能和待解决的主要功能列表。我们提供本页的目的是帮助开发者更好地了解平台的当前状态,以及他们可以在为未来做好准备时针对哪些功能。
Chrome 应用商店:移除了“大宣传图块”图片上传
Chrome 应用商店已从开发者信息中心的商品“商品详情”标签页中移除了“大宣传图块”上传界面。此次变更不会影响最终用户的体验,因为这些图片并未在消费者界面中使用。如需了解详情,请参阅这篇关于 chromium-extensions 的博文。
Chrome 106:允许 file:// 网址上的网页访问网络可访问资源
根据 crbug.com/1219825#c11 的规定,不透明源(例如沙盒化 iframe 和动态导入功能)应该也能够访问网络可访问资源。
Chrome 106:修复了在某些异步 API 函数中导致最终参数不正确的 bug
以前,调用异步 API 的 Manifest V3 可能会提供无效的最终参数,因此 Chrome 不会出错。修复此问题后,Chrome 现在可以正确地出错并报告没有匹配的签名。我们建议开发者在 Canary 版中检查扩展程序是否存在任何错误,以防他们意外使用错误的签名进行 API 调用,进而导致这些错误因此 bug 修复而失效。
博文:Chrome 应用商店分析功能改进
Chrome 应用商店改进了 Chrome 应用商店开发者信息中心的商品分析体验。新版信息中心一目了然,而且可以预先整合最有用的信息。如需了解详情,请阅读此博文。
Chrome 105:适用于 Identity API 的承诺
Identity API 上的函数现在支持基于 promise 的调用。这会对 identity.getAuthToken()
的 Surface 进行细微更改,在这种情况下,设置为基于 promise 的调用的异步返回值将“token”和“grantedScopes”作为单个对象上的参数(与回调版本相反,它们作为单独的参数接收回调)。
Chrome 104:Manifest V3 的全新网站图标 API
Manifest V3 扩展程序现在可以使用以下新网址格式访问网站图标:chrome-extension://<id>/_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 中的多功能框 API 支持
多功能框 API 现在可以在基于 Service Worker 的扩展程序中使用。以前,由于对 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 规则条件,以允许扩展程序根据请求的“请求”和“发起方”网域更好地定位请求。相关条件属性包括 initiatorDomains
、excludedInitiatorDomains
、requestDomains
和 excludedRequestDomains
。另请参阅此 chromium-extensions 线程。
Chrome 100:解决了新创建的标签页上的 scripting.executeScript()问题
修复了一个长期存在的问题:在新创建的标签页或窗口上调用 scripting.executeScript()
可能会失败。
Chrome 100:原生消息传递端口使 Service Worker 保持活跃状态
在扩展程序的 Service Worker 中使用 chrome.runtime.connectNative()
连接到原生消息传递主机时,只要端口处于打开状态,就应使 Service Worker 保持活跃状态。
Chrome 100:omnibox.setDefaultSuggestion() 支持 promise 和回调
omnibox.setDefaultSuggestion()
方法现在会返回一个 promise 或接受回调,以允许开发者确定何时正确设置了建议。
Chrome 100:扩展程序 Service Worker 支持 i18n.getMessage()
扩展 Service Worker 上下文现在支持 chrome.i18n.getMessage()
API。
Chrome 99:Canary 版 match_origin_as_fallback
内容脚本现在可以指定要注入到与匹配帧(包括具有 about:
、data:
、blob:
和 filesystem:
网址的帧)相关的帧中的 match_origin_as_fallback
键。如需了解详情,请参阅内容脚本文档。
Chrome 99:Canary 版中的 file: 架构支持扩展程序 Service Worker
基于 Service Worker 的 Manifest V2 和 Manifest V3 扩展程序现在可以使用 Fetch API 来请求 file:
架构网址。若要访问 file:
架构网址,用户仍需在 chrome://extensions
页面中为扩展程序启用“允许访问文件网址”。
Chrome 99:承诺在 Canary 中支持消息传递 API
对于为 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
与之前的所有版本相比,此版本包含更多承诺的更新。更新包括常规扩展程序 API 和 ChromeOS 专用扩展程序 API。请展开即可下部分了解详情。
Extensions API
现在,Manifest V3 中有许多 API 支持 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
和网站专用主机权限的现有 Manifest V2 扩展程序迁移到 chrome.declarativeNetRequest
API,而无需用户批准新权限。
Chrome 95:将脚本直接注入网页中
chrome.scripting
API 的 executeScript()
方法现在可以将脚本直接注入页面的主环境。以前,扩展程序只能直接注入到扩展程序的隔离环境中。如需详细了解隔离世界,请参阅有关内容脚本的文档。
Chrome 95:承诺支持 Storage API
Manifest V3 版的 chrome.storage
API 中的方法现在会返回 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,但 Manifest V3 用通用的 chrome.actions
API 取代了这两个 API。这篇博文探讨了这些 API 的历史以及 Manifest V3 中的变更。阅读帖子。
博文:chrome.scripting 简介
chrome.scripting
API 是一个新的 Manifest V3 API,侧重于脚本。在这篇博文中,我们深入研究了这一变化的动机,并详细了解了它的新功能。阅读帖子。
Chrome 92:支持模块 Service Worker
Chrome 现在支持 Service Worker 中的 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 中的 Web 可访问资源定义已更改,以允许扩展程序根据请求者的来源或扩展程序 ID 限制资源访问权限。
博文:Extension Manifest Converter
Chrome 扩展程序团队开发了“Extension Manifest Converter”这个 Python 工具的源代码,可自动执行将扩展程序转换为 Manifest V3 时的某些机械操作。请参阅公告博文并从 GitHub 获取。
Chrome 88:Manifest V3 正式版
Manifest V3 是对扩展程序平台的重大更新;如需查看新增功能和更改的功能的摘要,请参阅 Manifest V3 概览。目前,扩展程序可能会继续使用 Manifest V2,但很快就会被淘汰。我们强烈建议您为所有新的扩展程序使用 Manifest V3,并尽快开始将现有扩展程序迁移到 Manifest V3。