发布时间:2025 年 4 月 3 日
除非另有说明,否则以下变更适用于适用于 Android、ChromeOS、Linux、macOS 和 Windows 的最新 Chrome Beta 版分支。如需详细了解此处列出的功能,请点击所提供的链接,或访问 ChromeStatus.com 上的列表。Chrome 136 自 2025 年 4 月 3 日起处于 Beta 版阶段。您可以在桌面版 Google.com 或 Android 版 Google Play 商店下载最新版本。
CSS 和界面
此版本新增了 6 项 CSS 和界面功能。
CSS dynamic-range-limit
属性
让网页能够限制 HDR 内容的最大亮度。
忽略手写体字母间距
此功能添加了逻辑来忽略手写脚本的字母间距设置,即使开发者根据规范指定了此设置,也能确保字母间距不会导致单词断开。
对 :visited
链接历史记录进行分区
为防止用户浏览记录泄露,只有在用户之前从此顶级网站和框架源点点击了锚元素时,锚元素才会采用 :visited
样式。
通过仅设置之前在该网站和框架中点击过的链接的样式,许多用于获取 :visited
链接样式信息的旁道攻击现在已过时。它们不会再向网站提供有关用户的新信息。
详细了解我们对 :visited
链接隐私权所做的这些改进。
将 string
attr()
类型重命名为 raw-string
CSS 工作组决定将 string
attr()
类型替换为 raw-string
。
因此,Chrome 更改了 attr()
语法,以便 attr(data-foo string)
现在变为 attr(data-foo raw-string)
。
不限类型的 var()
回退
var()
函数的回退部分不会针对被引用的自定义属性的类型进行验证。
未带前缀的 print-color-adjust
借助 print-color-adjust
属性,您可以调整打印网页中的颜色。这与 Chrome 已支持的 -webkit-print-color-adjust
相同,但采用了标准化名称。-webkit
前缀版本不会被移除。
Web API
AudioContext 中断状态
向 AudioContextState
添加了 "interrupted"
状态。借助这个新状态,UA 可以在这些情况下暂停播放,并让 Web 应用做出适当响应。
Blob 网址分区:提取/导航
作为存储分区的延续,此功能会按存储键(顶级网站、框架源和 has-cross-site-ancestor 布尔值)对 Blob 网址访问进行分区,顶级导航除外,顶级导航将继续仅按框架源进行分区。此行为与 Firefox 和 Safari 目前实现的行为类似,并使 Blob 网址用法与其他存储空间 API 在存储空间分区中使用的分区方案保持一致。
此外,现在,系统会对由呈现程序发起的到 Blob 网址的顶级导航强制执行 noopener
,其中相应网站与执行导航的顶级网站是跨网站的。这与 Safari 中的类似行为保持一致,相关规范已更新以反映这些更改。
来自无响应网页的崩溃报告中的调用堆栈
当网页因 JavaScript 代码运行无限循环或其他非常长的计算而无响应时,此功能会捕获 JavaScript 调用堆栈。这有助于开发者找出无响应的根本原因。如果原因是无响应,崩溃报告 API 中会包含 JavaScript 调用堆栈。
Captured Surface Control API
借助 Captured Surface Control API,Web 应用可以将轮滚事件转发到已截取的标签页,以及读取和更改已截取标签页的缩放级别。
CapturedSurfaceResolution
在屏幕共享时公开所捕获 surface 的像素比。此功能有助于应用节省系统资源,或根据捕获 Surface 的实际和逻辑分辨率调整质量和带宽权衡。
将点击事件分派给捕获的指针
如果在分派 pointerup
事件时捕获了指针,则 click
事件将分派给捕获的目标,而不是分派给 pointerdown
和 pointerup
事件的最近共同祖先,如界面事件规范所述。对于未捕获的指针,click
目标保持不变。
使用魔法注释提供显式编译提示
允许附加有关应在 JavaScript 文件中提前解析和编译哪些函数的信息。这些信息将编码为魔法注释。
FedCM 更新:支持多个 IdP,移除了“被动模式”下的“添加其他账号”功能
经过此次更新,FedCM 可以在同一对话框中显示多个身份提供方。这样,开发者就可以通过一种便捷的方式向用户显示所有受支持的身份提供方。我们计划先解决将所有提供程序放在同一 get()
调用中的简单情况。我们还将移除对 FedCM 被动模式下的“添加其他账号”功能的支持。此功能可在选择器中将“使用其他账号”按钮与其他 IdP 账号一起显示。此功能目前未使用,并且根据用户体验对话,我们认为支持此功能会导致流程更复杂,而没有太大的好处。此功能在 FedCM 活跃模式下仍可正常运行。
Fluent 滚动条。
此功能可使 Windows 和 Linux 上的 Chrome 滚动条(叠加滚动条和非叠加滚动条)采用现代设计,以适应 Windows 11 Fluent 设计语言。在 Linux 和 Windows 中,非叠加 Fluent 滚动条默认处于启用状态。由于 Chrome 的 Linux 滚动条设计历来与 Windows 版本保持一致,因此这项更改也适用于 Linux。
WebRTC 中支持 H265 (HEVC) 编解码器
从 Chrome 136 开始,HEVC 将加入 VP8、H.264、VP9 和 AV1 的行列,成为 WebRTC 中受支持的编解码器。您可以使用 MediaCapabilities API 查询支持情况。
与 VP8 和 H264 等上一代编解码器相比,这种新型编解码器的压缩效率更高(每比特率质量更高),并且拥有长达十多年的强大硬件支持。这意味着电池续航时间会延长,出现性能问题的风险也会降低。此外,在无法使用硬件 VP9 或 AV1 编码器的情况下,视觉体验通常也会得到改善,具体取决于底层硬件编码器的性能。
更新了 MediaRecorder 的 H26x 编解码器支持
MediaRecorder API 现在支持 HEVC 编码,引入了 hvc1.*
编解码器字符串,并添加了支持 MP4 中可变分辨率视频的新编解码器 (hev1.*
和 avc3.*
)。Chrome 130 中的 WebCodecs 中添加了对 HEVC 平台编码的支持。作为后续行动,我们在 Chromium 中为 MediaRecorder API 添加了支持。该 API 现在同时支持具有不同 HEVC 和 H.264 MIME 类型规范的 MP4 和 Matroska 多路复用器类型。只有在用户的设备和操作系统提供必要功能的情况下,才支持 HEVC 编码。
Chrome 企业版中的 IP 地址日志记录和报告
Chrome 企业版通过收集和报告本地和远程 IP 地址,并将这些 IP 地址发送到安全调查日志 (SIT),从而增强安全监控和突发事件响应功能。此外,Chrome 企业版还允许管理员选择使用 Chrome 企业版报告连接器将 IP 地址发送给第一方和第三方 SIEM 提供商。此功能将面向 Chrome 企业核心版客户提供。
将导航启动器纳入 HTTP 缓存分区键
Chrome 的 HTTP 缓存键值方案已更新为包含 is-cross-site-main-frame-navigation
布尔值,以防范涉及顶级导航的跨网站泄露攻击。具体而言,这将防止跨网站攻击,在这种攻击中,攻击者可以发起对给定网页的顶级导航,然后导航到已知由该网页加载的资源,以便根据加载时间推断敏感信息。这项变更还可以防止恶意网站使用导航信息推断用户是否之前访问过给定网站,从而更好地保护隐私。
CanvasTextDrawingStyles
的语言支持
与所有 DOM 元素一样,<canvas>
DOM 元素也接受 lang
属性,该属性用于定义针对字体选择的语言专用处理(当字体具有语言区域专用字形时)。浏览器会遵循此属性。不过,创建 OffscreenCanvas 时无法设置语言区域信息,这可能会导致以下状态:OffscreenCanvas 生成的渲染结果与其输出所使用的画布不同。此功能会向 CanvasTextDrawingStyles
添加 lang
IDL 属性,以便直接控制文本绘制和指标的语言。
针对 iframe 的“权限”政策报告
引入了一种名为“潜在的权限政策违规行为”的新违规类型,该类型仅会查看权限政策(包括仅报告政策)和在 iframe 中设置的 allow
属性,以检测强制执行的权限政策与传播到 iframe 的权限之间的冲突。
可预测的报告存储空间配额
对于没有无限存储空间权限的网站,通过 StorageManager 的 Estimate API 报告可预测的存储空间配额。您可以使用报告的存储空间配额来检测用户的浏览模式,因为无痕模式下的可用存储空间比常规模式下的可用存储空间要小得多。
Private Aggregation API:汇总错误报告
使用 Private Aggregation API 时可能会遇到各种错误情况。例如,隐私预算可能会用尽,从而阻止进一步贡献直方图数据。借助此功能,开发者可以注册仅在发生特定类型的错误时才应发送的直方图贡献。此功能支持衡量错误情况的频率,并按开发者指定的相关维度(例如已部署代码的版本)对这些衡量结果进行拆分。由于错误本身可能是跨网站信息,因此我们无法仅向未使用第三方 Cookie 的用户在网页上显示这些错误。而是通过 Aggregation Service 重复使用现有的带噪声汇总报告流水线。
RegExp.escape
RegExp.escape
是一个静态方法,用于接受字符串并返回一个转义版本,该版本可用作正则表达式中的模式。例如:
const str = prompt("Please enter a string");
const escaped = RegExp.escape(str);
const re = new RegExp(escaped, 'g'); // handles reg exp special tokens with the replacement.
console.log(ourLongText.replace(re));
推测规则:代码字段
允许开发者将标记 field
添加到推测规则。此可选字段可用于跟踪推测规则的来源。例如,在中间服务器上对它们进行不同的处理。与推测相关联的所有标记都将随 Sec-Speculation-Tags
标头一起发送。
Storage Access API 的严格同源政策
调整了 Storage Access API 语义,以严格遵循同源政策。也就是说,默认情况下,在框架中使用 document.requestStorageAccess()
只会将 Cookie 附加到对 iframe 源(而非网站)的请求。请注意,CookiesAllowedForUrls
政策或存储空间访问标头可能仍可用于取消屏蔽跨网站 Cookie。
更新 ProgressEvent
,以便为 loaded
和 total
使用 double 类型
ProgressEvent
具有表示进度的属性 loaded
和 total
,它们的类型现在为 unsigned long long
。借助此功能,这两个属性的类型会改为 double
,这让开发者可以更好地控制值。例如,开发者现在可以创建一个 total
为 1 且 loaded
从 0 逐渐增加到 1 的 ProgressEvent。这与省略 max 属性时的 <progress>
HTML 元素的默认行为一致。
针对 getCharNumAtPosition
、isPointInFill
、isPointInStroke
使用 DOMPointInit
此项更改使 Chromium 代码在 getCharNumAtPosition
、isPointInFill
和 isPointInStroke
中使用 DOMPointInit
而非 SVGPoint
方面符合 SVGGeometryElement
和 SVGPathElement
的最新 W3C 规范。
Web 身份验证有条件创建(通行密钥升级)
借助 WebAuthn 条件式创建请求,网站可以将现有密码凭据升级为通行密钥。
WebGPU:GPUAdapterInfo
isFallbackAdapter
属性
GPUAdapterInfo
isFallbackAdapter
布尔值属性用于指示适配器是否存在明显的性能限制,以换取更广泛的兼容性、更可预测的行为或更出色的隐私保护。请注意,并非所有系统都提供回退适配器。
新的来源试用
在 Chrome 136 中,您可以选择参与以下新的源试用。
Audio Output Devices API:setDefaultSinkId()
此功能会向 MediaDevices 添加 setDefaultSinkId()
,以便顶级帧更改其子帧使用的默认音频输出设备。
让 Web 应用了解双峰性能时间
由于 Web 应用无法控制的因素,网页加载性能可能会呈现双峰分布。例如:
- 当用户代理首次启动(“冷启动”场景)时,它必须执行许多耗时的初始化任务,这些任务会争用系统资源。
- 浏览器扩展程序可能会影响网站的性能。例如,某些扩展程序会在您访问的每个网页上运行额外的代码,这可能会增加 CPU 使用率并导致响应时间变慢。
- 当机器忙于执行密集型任务时,网页的加载速度可能会变慢。
在这些情况下,Web 应用尝试加载的内容将与系统上正在进行的其他工作竞争。这使得很难检测 Web 应用本身是否存在性能问题,还是由外部因素导致。
PerformanceNavigationTiming
对象上新增的 confidence
字段可让开发者判断导航时间是否能代表其 Web 应用。
设备绑定会话凭据
一种网站将会话安全地绑定到单个设备的方式。
它可让服务器拥有与设备安全绑定的会话。浏览器会根据服务器的请求定期续订会话,并证明自己拥有私钥。
更新了画布文本渲染实现
CanvasRenderingContext2D 和 OffscreenCanvasRenderingContext2D 的 measureText()
、fillText()
和 strokeText()
的内部结构已替换为更好地支持 RTL 文本和缓存的新实现。这可能会影响性能和 BIDI 文本输出,因此此源代码试用版允许大量使用文本的画布应用试用新实现,并报告可能遇到的任何问题。
废弃和移除
此版本的 Chrome 引入了以下弃用和移除功能。如需查看计划弃用、当前弃用和之前移除的功能的列表,请访问 ChromeStatus.com。
此版本的 Chrome 弃用了两项功能。
废弃了 Intl 语言区域信息的 getter
Intl Locale Info API 是第 3 阶段的 ECMAScript TC39 提案,旨在通过公开语言区域信息(例如一周数据 [一周的第一天、周末的开始日期、周末的结束日期、第一周的最短天数])和语言区域中使用的文本方向小时周期来增强 Intl.Locale
对象。此更改移除了在发布后因规范变更而被弃用的某些 getter。
移除了 HTMLFencedFrameElement.canLoadOpaqueURL()
。
canLoadOpaqueURL()
已于 2023 年被 navigator.canLoadAdAuctionFencedFrame()
取代,自指引开发者使用新 API 以来,调用它都会导致控制台显示废弃警告。将该函数附加到 HTMLFencedFrameElement
没有意义,而应附加到 navigator
对象(其中包含其他围栏帧和广告竞价方法)。