Chrome 133

稳定版发布日期:2025 年 2 月 4 日

除非另有说明,否则以下变更适用于适用于 Android、ChromeOS、Linux、macOS 和 Windows 的 Chrome 133 稳定版。

HTML 和 DOM

popover 属性的提示值

Popover API 指定了 popover 属性的两个值(auto 和 manual)的行为。此特征描述了第三个值 popover=hint。提示通常与“提示”类型的行为相关联,但行为略有不同。主要区别在于,在打开嵌套的弹出式窗口堆叠时,提示会从属于“auto”。因此,您可以在一组现有自动弹出式窗口保持打开状态时,打开不相关的提示弹出式窗口。

规范化示例是,<select> 选择器处于打开状态 (popover=auto),并且显示了悬停触发的提示 (popover=hint)。该操作不会关闭 <select> 选择器。

跟踪 bug #1416284 | ChromeStatus.com 条目

改进了弹出式窗口调用程序和锚点定位

添加了一种使用 popover.showPopover({source}) 在弹出式窗口之间设置调用方关系的命令式方法。启用调用方关系以创建隐式锚元素引用。

跟踪 bug #364669918 | ChromeStatus.com 条目

嵌套在调用方中的弹出式窗口不应重新调用它

在以下示例中,点击按钮会正确激活弹出式窗口,但之后点击弹出式窗口本身不应关闭弹出式窗口。

<button popovertarget=foo>Activate
  <div popover id=foo>Clicking me shouldn't close me</div>
</button>

之前之所以会发生这种情况,是因为 popover 点击会气泡到 <button> 并激活调用方,从而关闭 popover。现在,此行为已更改为预期行为。

跟踪 bug #https://crbug.com/379241451 | ChromeStatus.com 条目

CSS

CSS 高级 attr() 函数

实现了 CSS 级别 5 中指定的对 attr() 的增强,除了 <string> 之外,还允许使用所有 CSS 属性(除了对伪元素内容的现有支持)。

MDN attr() | 跟踪 bug #246571 | ChromeStatus.com 条目 | 规范

CSS :open 伪类

:open 伪类在 <dialog><details> 处于打开状态时与其匹配,在 <select><input> 处于包含选择器且选择器正在显示的模式时与其匹配。

跟踪 bug #324293874 | ChromeStatus.com 条目 | 规范

CSS 滚动状态容器查询

使用容器查询根据容器的滚动状态设置容器的后代样式。

查询容器是滚动容器,或者是受滚动容器滚动位置影响的元素。您可以查询以下状态:

  • stuck:固定定位的容器会粘附在滚动条的某个边缘。
  • snapped:滚动贴靠对齐的容器目前处于水平或垂直贴靠状态。
  • scrollable:滚动容器是否可以在查询的方向滚动。

新增了容器类型:scroll-state,可用于查询容器。

跟踪 bug #40268059 | ChromeStatus.com 条目 | 规范

CSS text-boxtext-box-trimtext-box-edge

为了实现文本内容的最佳平衡,text-box-trim 和 text-box-edge 属性以及 text-box 缩写属性可让您更精细地控制文本的垂直对齐方式。

text-box-trim 属性用于指定要修剪的边(上方或下方),而 text-box-edge 属性用于指定应如何修剪边缘。

借助这些属性,您可以使用字体测量参数精确控制垂直间距。

跟踪 bug #1411581 | ChromeStatus.com 条目 | 规范

Web API

Animation.overallProgress

为开发者提供一种便捷且一致的方式,让他们能够了解动画在迭代过程中的进度,无论其时间轴的性质如何。如果不使用 overallProgress 属性,您需要手动计算动画的进度,同时考虑动画的迭代次数以及动画的 currentTime 是总时间的百分比(如滚动驱动型动画)还是绝对时间量(如时间驱动型动画)。

跟踪 bug #40914396 | ChromeStatus.com 条目 | 规范

Atomics 对象的 pause() 方法

pause() 方法添加到 Atomics 命名空间对象,以提示 CPU 当前代码正在执行自旋锁。

ChromeStatus.com 条目 | 规范

脚本的 CSP 哈希报告

出于安全考虑,复杂的 Web 应用通常需要跟踪其下载的子资源。

特别是,即将推出的行业标准和最佳实践(例如 PCI-DSS v4)要求 Web 应用保留其下载和执行的所有脚本的清单。

此功能基于 CSP 和 Reporting API,用于报告文档加载的所有脚本资源的网址和哈希值(适用于 CORS/同源)。

跟踪 bug #377830102 | ChromeStatus.com 条目

保留 DOM 状态的移动

添加了 DOM 基元 (Node.prototype.moveBefore),让您可以在 DOM 树中移动元素,而无需重置元素的状态。

移动(而非移除和插入)时,系统会保留以下状态,例如:

  • <iframe> 元素会保持加载状态。
  • 活动元素保持焦点。
  • 弹出式窗口、全屏窗口和模态对话框会保持打开状态。
  • CSS 过渡和动画会继续。

ChromeStatus.com 条目

<area> 上公开 attributionsrc 属性。

使 <area> 上的 attributionsrc 属性的公开与该属性的现有处理行为保持一致,即使该属性未公开也是如此。

此外,支持 <area> 上的此属性也是有意义的,因为该元素是一流的导航界面,而 Chrome 已经在 <a>window.open 的其他界面上支持此属性。

跟踪 bug #379275911 | ChromeStatus.com 条目 | 规范

FileSystemObserver 接口

FileSystemObserver 接口会将文件系统的更改通知网站。网站会监控用户之前授予权限的文件和目录在用户的本地设备或存储分区文件系统(也称为来源私有文件系统)中的更改,并会收到有关更改类型等基本更改信息的通知。

跟踪 bug #40105284 | ChromeStatus.com 条目

多个导入映射

导入映射目前必须在任何 ES 模块之前加载,并且每个文档只能有一个导入映射。这使得它们在实际场景中易于损坏且可能运行缓慢:在它们之前加载的任何模块都会破坏整个应用,而在包含多个模块的应用中,它们会成为一个大型阻塞资源,因为需要先加载所有可能模块的整个映射。

此功能可通过一致且确定性的方式合并多个导入映射,从而支持为每份文档创建多个导入映射。

ChromeStatus.com 条目

存储空间访问标头

为经过身份验证的嵌入内容提供了另一种选择启用未分区的 Cookie 的方法。这些标头用于指明给定网络请求中是否包含(或是否可以包含)未分区的 Cookie,并允许服务器激活已授予的“存储空间访问权限”。提供启用“storage-access”权限的替代方法可允许非 iframe 资源使用该权限,并可缩短经过身份验证的嵌入的延迟时间。

跟踪 bug #329698698 | ChromeStatus.com 条目 | 规范

支持使用 Promise<DOMString> 创建 ClipboardItem

ClipboardItem(即异步剪贴板 write() 方法的输入)现在在其构造函数中除了接受 Blob 外,还接受字符串值。ClipboardItemData 可以是 Blob、字符串或解析为 Blob 或字符串的 Promise。

跟踪 bug #40766145 | ChromeStatus.com 条目 | 规范

WebAssembly Memory64

memory64 提案增加了对大小大于 2^32 位的线性 WebAssembly 内存的支持。它不提供任何新指令,而是扩展了现有指令,以允许为内存和表使用 64 位索引。

ChromeStatus.com 条目 | 规范

Web Authentication API:PublicKeyCredential getClientCapabilities() 方法

通过 PublicKeyCredential getClientCapabilities() 方法,您可以确定用户的客户端支持哪些 WebAuthn 功能。该方法会返回支持的功能列表,以便开发者根据客户端的具体功能量身定制身份验证体验和工作流。

跟踪 bug #360327828 | ChromeStatus.com 条目 | 规范

Web Cryptography API 的 X25519 算法

“X25519”算法提供了使用 [RFC7748] 中指定的 X25519 函数执行密钥协定的工具。在 SubtleCrypto 接口中,可以使用“X25519”算法标识符来访问已实现的操作:generateKey、importKey、exportKey、deriveKey 和 deriveBits。

跟踪 bug #378856322 | ChromeStatus.com 条目 | 规范

性能

节能模式下冻结

当“能耗节省器”处于启用状态时,如果“浏览内容组”已隐藏且处于静默状态超过 5 分钟,并且其中同源框架的任何子组超出了 CPU 使用率阈值,Chrome 会冻结该“浏览内容组”,除非:

  • 提供音频或视频会议功能(通过识别麦克风、摄像头或屏幕/窗口/标签页截取或具有“打开”RTCDataChannel 或“实时”MediaStreamTrack 的 RTCPeerConnection 进行检测)。
  • 控制外部设备(使用 WebUSB、Web Bluetooth、WebHID 或 Web Serial 检测到的)。
  • 持有 Web 锁或 IndexedDB 连接,导致其他连接上的版本更新或事务被阻塞。
  • 冻结包括暂停执行。它在 Page Lifecycle API 中进行了正式定义。

当能耗省电模式处于启用状态时,CPU 使用率阈值将经过校准,以冻结大约 10% 的后台标签页。

跟踪 bug #325954772 | ChromeStatus.com 条目

在元素时间和 LCP 中公开粗略的跨源 renderTime(无论 Timing-Allow-Origin 如何)

元素时间和 LCP 条目具有 renderTime 属性,与绘制图片或文本的第一帧对齐。

目前,此属性会通过要求在图片资源上添加 Timing-Allow-Origin 标头来防范跨源图片。不过,这个限制很容易规避(例如,在同一框架中显示同源图片和跨源图片)。

由于这一直是造成混淆的原因,因此我们计划移除此限制,改为在文档未实现跨源隔离时将所有呈现时间粗略估算为增加 4 毫秒。这似乎足够粗糙,可以避免泄露有关跨源图片的任何有用解码时间信息。

跟踪 bug #373263977 | ChromeStatus.com 条目 | 规范

还原了 responseStart 并引入了 firstResponseHeadersStart

启用 103 早期提示后,响应有两个时间戳:

  • 早期提示何时到达 (103)
  • 收到最终标头(例如 200)时
  • 在 Chrome 115 中发布 firstInterimResponseStart 以允许衡量这两个时间戳时,我们还将 responseStart(由第一字节时间 (TTFB) 使用)的含义更改为“最终标头”。这导致了浏览器和工具与此常用指标之间出现 Web 兼容性问题,因为这些浏览器和工具并未对此指标进行类似更改。

Chrome 133 会还原此 responseStart 更改以解决此兼容性问题,并改为引入 firstResponseHeadersStart,以允许网站衡量到最终标头的时间,同时保留 TTFB 的原始定义。

跟踪 bug #40251053 | ChromeStatus.com 条目 | 规范

渲染和图形

WebGPU:1 个组成部分的顶点格式(和 unorm8x4-bgra)

添加了 WebGPU 初始版本中因缺少支持或旧版 macOS(任何浏览器都不支持)而未包含的其他顶点格式。1 个组成部分的顶点格式让应用只请求必要的数据,而以前它们必须为 8 位和 16 位数据类型请求至少两倍的数据。借助 unorm8x4-bgra 格式,您可以更轻松地加载 BGRA 编码的顶点颜色,同时保持相同的着色器。

跟踪 bug #376924407 | ChromeStatus.com 条目

源试用

选择在节能模式下停用冻结功能

通过这项“用户选择停用”试用计划,网站可以选择停用 Chrome 133 中推出的节能模式下冻结行为。

Origin Trial | 跟踪 bug #325954772 | ChromeStatus.com 条目 | 规范

跨根 ARIA 的参考目标

引用目标是一项功能,可让您使用 IDREF 属性(例如 foraria-labelledby)引用组件 shadow DOM 内的元素,同时保持 shadow DOM 内部详细信息的封装。此功能的主要目标是让 ARIA 能够跨阴影根边界运行。

组件可以在其阴影树中指定一个元素作为其“参考目标”。当宿主组件是 IDREF(例如标签的 for 属性)的目标时,引用目标会成为标签的有效目标。

影子根用于指定 shadow DOM 中目标元素的 ID。您可以在 JavaScript 中使用 ShadowRoot 对象上的 referenceTarget 属性实现此操作,也可以在 HTML 标记中使用 <template> 元素上的 shadowrootreferencetarget 属性实现此操作。

Origin Trial | ChromeStatus.com 条目

废弃和移除

废弃 WebGPU 限制 maxInterStageShaderComponents

maxInterStageShaderComponents limit 已因多种因素而被弃用。预计在 Chrome 135 中移除。

  • maxInterStageShaderVariables 重复:此限制已经用于类似用途,即控制着在着色器阶段之间传递的数据量。
  • 细微差异:虽然这两个限制的计算方式略有不同,但这些差异很小,并且可以在 maxInterStageShaderVariables 限制内有效管理。
  • 简化:移除 maxInterStageShaderComponents 可简化着色器接口,并降低开发者的复杂性。这样,他们无需管理两个存在细微差异的单独限制,而是可以专注于更恰当命名且更全面的 maxInterStageShaderVariables

ChromeStatus.com 条目

以前,使用 <link rel=prefetch> 预提取资源时,Chrome 会在五分钟内首次使用时忽略其缓存语义(即 max-ageno-cache),以避免重新提取。现在,Chrome 已移除此特殊情况,并使用正常的 HTTP 缓存语义。

这意味着,Web 开发者需要添加适当的缓存标头(Cache-Control 或 Expires),才能获享 <link rel=prefetch> 的好处。

这也会影响非标准 <link rel=prerender>

跟踪 bug #40232065 | ChromeStatus.com 条目

移除了使用初始偏好设置首次运行标签页触发 Chrome 欢迎页

现在,在 initial_preferences 文件的 first_run_tabs 属性中添加 chrome://welcome 将没有任何作用。之所以移除该页面,是因为该页面与在桌面平台上触发的首次运行体验重复。

ChromeStatus.com 条目