Chrome 136 Beta 版

发布时间:2025 年 4 月 3 日

除非另有说明,否则以下更改适用于 Android、ChromeOS、Linux、macOS 和 Windows 的最新 Chrome Beta 版渠道版本。如需详细了解此处列出的功能,请点击提供的链接或访问 ChromeStatus.com 上的列表。截至 2025 年 4 月 3 日,Chrome 136 仍处于 Beta 版阶段。您可以在 Google.com 上下载桌面版最新版本,也可以在 Android 设备上的 Google Play 商店中下载。

CSS 和界面

此版本新增了六项 CSS 和界面功能。

CSS dynamic-range-limit 属性

使网页能够限制 HDR 内容的最大亮度。

忽略草书脚本中的字母间距

此功能添加了逻辑,用于忽略草书脚本的字间距设置(即使开发者按照规范指定了该设置),以确保字间距不会断开字词。

为避免用户浏览记录泄露,仅当锚元素之前已从该顶级网站和框架来源点击过时,才将其样式设置为 :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,其中相应网站与执行导航操作的顶级网站属于不同的网站。这使 Chrome 与 Safari 中的类似行为保持一致,并且相关规范已更新以反映这些更改。

无响应网页的崩溃报告中的调用堆栈

当网页因 JavaScript 代码运行无限循环或其他非常耗时的计算而变得无响应时,此功能会捕获 JavaScript 调用堆栈。这有助于开发者找出无响应的原因。 当原因是无响应时,崩溃报告 API 中会包含 JavaScript 调用堆栈。

捕获的 Surface Control API

借助 Captured Surface Control API,Web 应用可以将滚轮事件转发到捕获的标签页,并读取和更改捕获的标签页的缩放级别。

CapturedSurfaceResolution

在屏幕共享时,公开所捕获界面的像素比。此功能将帮助应用节省系统资源,或根据捕获的表面的物理分辨率和逻辑分辨率调整质量与带宽之间的权衡。

将点击事件分派给捕获的指针

如果在调度 pointerup 事件时捕获了指针,则会根据界面事件规范,将 click 事件调度到捕获的目标,而不是 pointerdownpointerup 事件的最近共同祖先。对于未捕获的指针,click 目标保持不变。

使用 magic comment 提供明确的编译提示

允许附加有关应在 JavaScript 文件中急切解析和编译哪些函数的信息。这些信息将编码为神奇注释。

FedCM 更新:支持多个 IdP,移除了被动模式下的“添加其他账号”功能

在此更新中,FedCM 可以在同一对话框中显示多个身份提供方。这为开发者提供了一种向用户展示所有受支持的身份提供方的便捷方式。我们计划先处理所有提供方都在同一 get() 调用中的简单情况。我们还移除了在 FedCM 被动模式下对“添加其他账号”功能的支持。此功能允许在选择器中与其他 IdP 账号一起显示“使用其他账号”按钮。该功能目前未使用,并且用户体验方面的讨论让我们认为,支持此功能会导致流程更加复杂,但好处并不多。此功能在 FedCM 活跃模式下仍可正常运行。

Fluent 滚动条。

此功能可将 Windows 和 Linux 上的 Chrome 滚动条(包括叠加滚动条和非叠加滚动条)更新为符合 Windows 11 Fluent 设计语言的现代风格。在 Linux 和 Windows 中,非叠加 Fluent 滚动条将默认处于启用状态。此更改也适用于 Linux,因为 Chrome 的 Linux 滚动条设计在历史上一直与 Windows 上提供的滚动条设计保持一致。

WebRTC 中的 H265 (HEVC) 编解码器支持

从 Chrome 136 开始,HEVC 将与 VP8、H.264、VP9 和 AV1 一起成为 WebRTC 中受支持的编解码器。可以使用 MediaCapabilities API 查询支持情况。

与 VP8 和 H264 等旧版编解码器相比,这种新编解码器的压缩效率更高(单位比特率的质量更高),并且在过去十多年中一直有非常强大的硬件支持。这有助于延长电池续航时间并降低出现性能问题的风险,而且,根据底层硬件编码器的性能,在没有硬件 VP9 或 AV1 编码器的情况下,通常会改善视觉体验。

针对 MediaRecorder 的 H26x 编解码器支持更新

MediaRecorder API 现在支持 HEVC 编码,引入了 hvc1.* 编解码器字符串,并添加了新的编解码器(hev1.*avc3.*),支持 MP4 中的可变分辨率视频。Chrome 130 中的 WebCodecs 添加了对 HEVC 平台编码的支持。后续,Chromium 中的 MediaRecorder API 已添加支持。该 API 现在支持 MP4 和 Matroska 多路复用器类型,并具有不同的 HEVC 和 H.264 MIME 类型规范。仅当用户的设备和操作系统提供必要的功能时,才支持 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 以针对 loadedtotal 使用 double 类型

ProgressEvent 具有属性 loadedtotal,用于指示进度,它们的类型现在为 unsigned long long。借助此功能,这两个属性的类型将更改为 double,从而让开发者可以更好地控制值。例如,开发者现在可以创建 total 为 1 且 loaded 从 0 逐渐增加到 1 的 ProgressEvent。这与省略 max 属性时 <progress> HTML 元素的默认行为一致。

使用 DOMPointInit 表示 getCharNumAtPositionisPointInFillisPointInStroke

此项更改使 Chromium 代码在 SVGGeometryElementSVGPathElement 方面与最新的 W3C 规范保持一致,即在 getCharNumAtPositionisPointInFillisPointInStroke 方面使用 DOMPointInit 而不是 SVGPoint

Web 身份验证条件创建(通行密钥升级)

借助 WebAuthn 条件创建请求,网站可以将现有的密码凭据升级为通行密钥。

WebGPU:GPUAdapterInfo isFallbackAdapter 属性

GPUAdapterInfo isFallbackAdapter 布尔值属性用于指示适配器是否在牺牲性能的情况下换取了更广泛的兼容性、更可预测的行为或更高的隐私保护。请注意,并非所有系统都提供后备适配器。

新的源试用

在 Chrome 136 中,您可以选择加入以下新的源试用

音频输出设备 API:setDefaultSinkId()

此功能向 MediaDevices 添加了 setDefaultSinkId(),使顶级框架能够更改其子框架使用的默认音频输出设备。

让 Web 应用了解双峰性能时间

由于 Web 应用无法控制的因素,Web 应用的网页加载性能可能会呈现双峰分布。例如:

  • 当用户代理首次启动(“冷启动”场景)时,必须执行许多占用系统资源的昂贵初始化任务。
  • 浏览器扩展程序可能会影响网站的性能。例如,某些扩展程序会在您访问的每个网页上运行额外的代码,这可能会增加 CPU 使用率,导致响应时间变慢。
  • 当机器忙于执行密集型任务时,网页加载速度可能会变慢。

在这些场景中,Web 应用尝试加载的内容会与系统上正在进行的其他工作竞争。这使得我们很难检测到性能问题是出在 Web 应用本身,还是由于外部因素。

PerformanceNavigationTiming 对象上的新 confidence 字段将使开发者能够辨别导航计时是否代表其 Web 应用。

设备绑定会话凭证

一种让网站将会话安全地绑定到单个设备的方式。

它允许服务器拥有安全绑定到设备的会话。浏览器会根据服务器的请求,定期使用私钥所有权证明来续订会话。

更新了画布文本呈现实现

CanvasRenderingContext2D 和 OffscreenCanvasRenderingContext2D 的 measureText()fillText()strokeText() 的内部结构已替换为可更好地支持 RTL 文本和缓存的新实现。这可能会影响性能和 BIDI 文本输出,因此此源试用允许文本密集型 canvas 应用试用新实现并报告可能遇到的任何问题。

弃用和移除

此版本的 Chrome 引入了以下弃用和移除功能。 如需查看计划弃用、当前弃用和之前移除的功能列表,请访问 ChromeStatus.com。

此版本的 Chrome 弃用了两项功能。

弃用了 Intl Locale Info 的 getter

Intl Locale Info API 是一项 Stage 3 ECMAScript TC39 提案,旨在通过公开语言区域信息(例如周数据 [一周中的第一天、周末开始日期、周末结束日期、第一周中的最少天数])和语言区域中使用的文字方向小时周期来增强 Intl.Locale 对象。此更改移除了自发布以来在规范更改中被弃用的一些 getter。

移除了 HTMLFencedFrameElement.canLoadOpaqueURL()

canLoadOpaqueURL() 已于 2023 年被 navigator.canLoadAdAuctionFencedFrame() 取代,自那时起,调用 canLoadOpaqueURL() 会导致控制台中显示弃用警告,引导开发者使用新 API。将该函数附加到 HTMLFencedFrameElement 没有意义,而应将其附加到 navigator 对象(其中包含其他 fenced frame 和广告竞价方法)。