请经常查看此页面,了解 Chrome 扩展程序、扩展程序文档、相关政策或其他方面的变更。您还可以在 Extensions Google 网上论坛 上发布其他通知。Chrome 时间表中列出了稳定版和 Beta 版发布日期。
视频:什么是远程托管代码?
Chrome 扩展程序团队的 Patrick 介绍了 Chrome 扩展程序中的远程托管代码 (RHC) 的概念。了解不再允许使用 RHC 的原因、如何检测 RHC,以及需要更新扩展程序时的应对措施。观看完整视频。
Chrome 127:新增 action.openPopup API
从 Chrome 127 开始,action.openPopup
API 适用于所有扩展程序。以前,它仅适用于 Canary 版或根据政策安装的扩展程序。
视频:信任与安全团队访谈
Chrome 扩展程序开发技术推广团队与信任与安全团队坐在一起,该团队负责领导 Chrome 应用商店中的审核工作,并提出您的问题。观看完整视频。
博文:Manifest V2 逐步弃用
自 6 月 3 日起,Chrome Beta 版、开发者版和 Canary 版中的部分应用如果仍然安装 Manifest V2 扩展程序,部分用户在访问扩展程序管理页面 chrome://extensions 时会看到警告横幅,通知他们已安装的部分(Manifest V2)扩展程序很快将不再受支持。如需了解详情,请参阅官方公告
侧边栏界面更新
我们最近对侧边栏界面进行了一些更改,包括添加图钉图标和移除全局侧边栏图标。如需了解详情,请参阅 PSA,并查看我们更新后的文档和示例。
博文:2024 年 Google I/O 大会上的 Chrome 扩展程序
另一场 Google I/O 大会即将拉开帷幕,我们已经介绍了所有激动人心的扩展程序更新!前往 YouTube 观看完整视频,并阅读我们的博文,了解部分亮点。
跳过审核以检查符合条件的声明式网络请求变更
现在,当您使用声明式 Net Request API 时,Chrome 应用商店可让您跳过审核符合条件的更改。如需详细了解资格条件和启用方式,请参阅 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 从设计上来讲会在不需要时关闭,从而节省资源。这就带来了一定的测试挑战。这篇博文说明了 eyo 如何应对这些挑战。
Chrome 123:闹钟现在会在设备处于休眠状态时运行
当设备进入休眠状态时,使用 chrome.alarms
API 设置的闹钟不会再延迟。当设备唤醒时,无论错过了多少次闹钟,闹钟都会触发一次。例如,假设某个闹钟设置为每小时响铃一次,并且所用设备在凌晨 12:55 到凌晨 2:05 处于睡眠状态,那么只有凌晨 2:00 的闹钟会触发 onAlarm
事件。它会在凌晨 2:00 左右触发,并在设备处于睡眠状态时被唤醒。
经过此次变更,Chrome 将与 Web Extensions 社区小组商定的行为保持一致。
博文:通过扩展程序消息端口对 bfcache 行为做出的更改
往返缓存 (bfcache) 是一项浏览器优化功能,用于实现即时返回和前进导航。从 Chrome 123 开始,当具有开放扩展程序端口的网页存储在 bfcache 中时,消息通道将关闭,这意味着系统不会向该网页发送任何消息。因此,扩展程序脚本应监听生命周期事件(如 onDisconnect
),并在从 BFCache 恢复页面时设置新的连接。
如需了解详情并查看示例代码,请参阅通过扩展程序消息端口对 BFCache 行为做出的变更。
Chrome 122:异步扩展程序 API 的 Promise 支持
我们已完成对所有异步扩展 API 方法的 Promise 支持。这样做是为了通过改善处理异步操作的工效学设计,实现 API 方法的现代化。少数方法(例如 desktopCapture.chooseDesktopMedia()
)继续仅支持回调,因为它们的当前 Surface 与 promise 不兼容。为了实现向后兼容性,系统仍支持回调。如果您发现失败的 Promise,请提交 bug。
关于实时通信的新指南
我们刚刚发布了有关扩展程序中实时选项的指南。实时更新提供了从服务器直接到扩展程序安装的即时通信路径。此外,我们还提供了有关如何使用 chrome.gcm 和 Web Push 的新指南。
新指南和示例:测试 Service Worker 终止
我们刚刚发布了有关如何使用 Puppeteer 测试 Service Worker 终止情况的指南。随附的示例在 Puppeteer 和 Selenium 中演示了这一点。
更新后的原生消息传递示例
我们刚刚发布了原生消息传递的经过更新的示例。此 API 可让您的扩展程序启动其他应用并与之通信。感谢 GitHub 贡献者 Shubham-Rasal 在这方面的工作。
Chrome 121:标签页上新增了 lastAccessed 属性
tabs.Tab
对象中添加了一个名为 lastAccessed
的新属性。此属性指示标签页的上次激活时间。返回值以毫秒为单位,从 Epoch 起算。
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 秒的延迟或 30 秒的延迟(而不是要求 60 秒或更长时间的值)。
博文:继续向 Manifest V3 过渡
Manifest V2 支持时间表已更新。如需了解详情,请参阅我们的 2023 年 11 月博文。
博文:改进 Manifest V3 中的内容过滤支持
在我们的新博文中了解我们如何改进 declarativeNetRequest API。
博文:Chrome 120 for Extensions 的新变化
Chrome 120 Beta 版已于近期发布。如需简要了解与扩展程序开发者相关的重要更新,请阅读我们的新博文:Chrome 120 for Extensions 的新变化。此版本也标志着一个重大里程碑,从重要平台差距列表中移除了最后两项内容(userScript,ChromeOS 上的文件处理程序)。
PSA:开发者信息中心内隐私权政策网址的处理方式有所变化
开发者信息中心内的隐私权政策现已在产品一级添加。这样,您就可以为每种内容提供不同的隐私权政策。如需详细了解这一变更,请参阅我们的公益广告。
视频:与 Matt Frisbie 的对话
我们刚刚在 Chrome for Developers YouTube 频道上发布了一个新视频,这个视频与 Google 开发者专家兼作者 Matt Frisbie 进行了交流。点击此处观看。
关于测试扩展程序的新指南
我们刚刚发布了有关如何为扩展程序编写自动化测试的新指南,包括如何编写单元测试以及有关端到端测试的一般指南和教程。
博文:Chrome 扩展程序的新变化 - 2023 年 10 月
我们刚刚发布了第二版 Chrome Extensions 中发生了哪些变化。这篇博文讨论了扩展程序团队在过去几个月里的工作,包括解决 Service Worker 稳定性问题,以及在弥补 MV3 平台的所有差距方面取得良好进展。我们还分享了即将推出的令人兴奋的 API 版本,例如 Reading List API 和 User Scripts API。
提高了声明式 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 Storage API 的文档
我们发布了有关 Chrome 扩展程序中 Cookie 和 Web Storage API 如何工作的新指南。 其中包含有关 Privacy Sandbox 中 Cookie 和存储分区分区变更的详细信息。Privacy Sandbox 是一个正在进行的项目,通过创建一系列新的 Web 平台 API 来弃用第三方 Cookie,并详细介绍了这些 Cookie 在扩展程序中的工作原理。
扩展程序示例现在可供搜索
我们最近创建了一个页面,可让您搜索 Chrome 扩展程序示例。搜索页面具有多个选项。您可以使用搜索框搜索示例标题中的文字。您可以通过权限或扩展程序 API 限制搜索。借助额外的过滤条件,您可以将搜索范围限制为 API 或功能(用例)示例。
这个新的示例页面由 Google 编程之夏的参与者 Xuezhou Dai 构建,后者也贡献了几个新示例。您可以阅读他们在我们博客上的博文,了解他们去年夏天的经历。
和之前一样,GitHub 上仍然提供了我们的代码示例,供您克隆或创建分支。
Chrome 118:对打开文件 (scheme 网址) 的更改
从 Chrome 118 开始,扩展程序需要在 chrome://extensions
页面中启用“允许访问文件网址”设置,才能使用标签页或 Windows API 打开 file:// scheme 网址。您可以通过调用 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 通过指定声明式规则来屏蔽或修改网络请求。这样一来,扩展程序便可以在不拦截请求和查看其内容的情况下修改网络请求,从而为用户提供更多隐私。使用起来也很困难。有鉴于此,我们重新编写了该指南,以更清晰地展示如何实施声明式规则集。请访问上方链接,阅读新部分。
在 Chrome 应用商店中使用您的 Google Analytics(分析)账号
Chrome 应用商店提供了与 Google Analytics(分析)的集成,这样一来,除了开发者信息中心内提供的视图外,您还可以查看 Chrome 应用商店商品详情的分析数据。有关详情,请参阅在 Chrome 应用商店中使用 Google Analytics(分析)帐号。
Chrome 115:默认情况下,开发者工具会跳过内容脚本
注入的内容脚本现在默认位于开发者工具忽略列表中。这不会影响断点,但意味着在调试过程中将跳过内容脚本,并忽略来自这些脚本的异常。当内容脚本在来源标签页中打开时,如果已启用横幅功能,您会看到一个横幅来提醒您,并提供一个选项,以便您从忽略列表中移除您的内容脚本。如需关闭此行为,请打开开发者工具,依次前往设置和忽略列表。如需了解详情,请参阅 DevTools 的新变化。
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:新的 Side Panel API
我们推出了新的 Side Panel API,这个配套界面可让用户在浏览的内容旁边使用各种工具。如需了解详情,请访问 Side Panel API 参考文档。此外,我们还向 GitHub 示例代码库中添加了许多侧边栏示例。此外,我们还在全新博文利用新的 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 的 README 文件,以便您更轻松地在运行该工具后查看需要执行的操作。该转换器有助于将基于 Manifest V2 构建的扩展程序迁移到 Manifest V3。新的 README 文件使用与迁移指南核对清单中的字词非常接近的字词来描述该工具的用途。虽然转换器并不是所有事情,但它确实可以消除许多不需要人工判断的任务。
Chrome 113:出现屏幕外文档的新原因
我们向 Offscreen Documents API 中添加了两个新的原因类型。使用 LOCAL_STORAGE
访问网络平台的 localStorage API。创建 Web Worker 时使用 WORKER
。
Google Analytics(分析)4 现已在开发者信息中心内
Chrome 应用商店开发者信息中心现在支持 Google Analytics(分析)4 (GA4)。我们简化了 Google Analytics(分析)的设置过程,并针对群组发布者进行访问权限管理变得更加简单明了。如果您之前曾使用 Google Universal Analytics 跟踪商品详情活动,则需要在 2023 年 7 月 1 日之前采取行动,以确保继续接收商品详情的相关数据。如需了解详情,请参阅 Google 网上论坛上关于 Chromium 扩展程序的帖子。
File Handling API 现已登陆 ChromeOS
在 Canary 版中,File Handler API 可用于在 ChromeOS 中针对版本 112 和 113 进行实验。它允许 ChromeOS 上的扩展程序打开具有指定 MIME 类型和文件扩展名的文件。如需实现文件处理,请向 manifest.json
添加一组规则。此功能与渐进式 Web 应用的工作方式相同。有关详情,请参阅本网站其他位置的文章。
如需启用文件处理功能,请执行以下操作:
- 从 Android 112 开始,使用
--enable-features=ExtensionWebFileHandlers
标志启动 Chrome(从 112 开始) - 从 Android 113 开始,将
os://flags/#extension-web-file-handlers
粘贴到 Chrome 的多功能框中并从下拉菜单中选择“已启用”。
我们希望于 6 月下旬在 Chrome 115 中推出此功能。请关注此处的最新动态。
新示例:动态声明和程序化注入
我们为 chrome.scripting
API 构建了一个新示例。该示例演示了动态声明(即在运行时注册内容脚本)以及程序化注入(即脚本在已打开的标签页中执行)。
新示例:声明式网络请求用例
我们提供了三个新示例来演示 声明式 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 空闲超时时间变更
以前,Extension Service Worker 经常会在五分钟时关闭。我们已更改此行为,使其更接近网络上的 Service Worker 生命周期。扩展 Service Worker 将在不活动状态 30 秒后或单个 Activity 的处理时间超过 5 分钟时关闭。如需了解详情,请参阅更长的扩展 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 函数使用错误的最终参数的错误
以前,Manifest V3 调用异步 API 可能会提供无效的最终参数,并且 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:injectImmediately 属性 inscripting.executeScript()
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:解决了新创建的标签页上的 servering.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 方案”的扩展 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()
方法现在接受多个文件。以前,这些方法需要具有单个文件条目的数组。
Google 文档更新:有关审核违规问题问题排查的更新
我们更新了 Chrome 应用商店违规行为问题排查页面,针对被拒的常见原因,为开发者提供了更详细的指导。
Chrome 96:将 promise 支持扩展到新增 27 个 API
此版本包含的 promise 更新明显多于之前的任何版本。更新包括常规扩展程序 API 和 ChromeOS 专用扩展程序 API。如需了解详情,请展开即可下部分。
Extensions API
现在,很多 API 在 Manifest 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
和网站专属主机权限的现有 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 将这两个 API 都替换成了通用的 chrome.actions
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"
}
这会将工作器脚本作为 ES 模块加载,以便您在工作器脚本中使用 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 限制资源访问权限。
博文: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。