Chrome 125

稳定版发布日期:2024 年 5 月 14 日

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

HTML 和 DOM

声明式 shadow DOM 序列化

一项可让开发者序列化包含 shadow root 的 DOM 树的功能,最近已在 HTML 标准中标准化。

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

CSS

CSS 锚点定位

借助 CSS 锚点定位,开发者可以采用声明式方式将绝对定位的元素绑定到页面上的一个或多个其他元素(锚点),而无需使用 JavaScript。当锚点可滚动时,锚点定位功能会高效运行。一个常见的应用场景是将弹出式窗口(例如提示)放置在调用它的元素旁边,或者将选择菜单及其弹出式选项列表放置在调用它的元素旁边。在锚点定位功能推出之前,这些用例需要 JavaScript 来动态定位弹出式窗口,并在滚动调用元素时使其保持锚定状态,这会影响性能,而且很难正确实现。借助锚点定位,这些用例可以高效且声明式地实现。

锚点定位功能包含大量 CSS 属性。其中一些关键属性如下:

  • anchor-name:将一个元素设置为其他元素的锚点。
  • position-anchor:描述锚定元素应使用的“默认”锚点,以便进行锚点定位。
  • anchor() 函数:用于在定位锚定元素时引用锚点元素的位置。
  • inset-area:定位的简写形式,用于常见的相对位置。

CSS 锚点定位 API 简介 | 跟踪 bug #40059176 | ChromeStatus.com 条目 | 规范

CSS 阶梯值函数 - round()、mod() 和 rem()

阶梯值函数 round()、mod() 和 rem() 都会根据另一个“阶梯值”转换给定值。

round() CSS 函数会根据所选的舍入策略返回一个舍入数字。

mod() CSS 函数会返回第一个参数除以第二个参数后剩余的模数,类似于 JavaScript 余数运算符 (%)。模数是指一个操作数(被除数)除以第二个操作数(除数)后剩余的值。它始终采用除数的符号。

rem() CSS 函数会返回第一个参数除以第二个参数后得到的余数,类似于 JavaScript 余数运算符 (%)。余数是一个运算数(被除数)除以第二个运算数(除数)后剩余的值。它始终采用被除数的符号。

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

CSS 自定义 :state() 的新语法

CSS 自定义状态允许自定义元素公开其自己的伪类。该语法现已在 CSSWG 中指定,Chrome 125 现已支持新语法 :state(foo)。在此次变更期间,Chrome 将同时支持旧语法 (:--foo) 和新语法,以便网站可以切换到新语法。

ChromeStatus.com 条目 | 规范

移除了亮度接近 100% 或 0 的 Oklab 和 Oklch 颜色的不连续性

在此变更之前,所有亮度值为 100% 的 Lab、LCH、Oklab 和 Oklch 颜色都会呈现为白色,而不管其他两个参数如何。这些空间中亮度值为 0 的所有颜色都会呈现为黑色。这两个映射会导致渐变不连续,并且 Web 开发者不希望出现这种情况。

回滚后,这些颜色不再进行人工映射,最终显示的颜色将与附近的颜色连续,并取决于显示屏的色域映射。

ChromeStatus.com 条目 | 规范

使用了配色方案根滚动条

如果“页面支持的配色方案”的值为“normal”或未指定,并且根元素的 color-scheme 计算值为 normal,则使浏览器使用用户首选的配色方案来呈现视口滚动条。视口滚动条可以被视为位于 Web 内容之外。因此,如果开发者未明确指定对配色方案的支持,则用户代理在呈现视口滚动条时应遵循用户首选的配色方案。

此项变更不会阻止开发者控制滚动条的配色方案。新行为会使浏览器使用用户首选的配色方案来呈现视口非叠加滚动条,前提是开发者未为根元素指定配色方案。

标题 | 跟踪 bug #40259909 | ChromeStatus.com 条目 | 规范

view-transitions 类

新增了 CSS 属性 view-transition-class,可让您指定一个或多个视图过渡类。然后,您可以使用这些类(例如 ::view-transition-group(*.class))选择 ViewTransition 伪元素。

这是 ViewTransition API 的扩展,可简化视图过渡伪元素的样式设置,其方式与 CSS 类简化常规 DOM 元素的样式设置类似。

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

正在加载

在构建 WebSocket 时接受 HTTP 和 HTTPS 网址

此更新在 WebSocket 构造函数中启用了 HTTP 和 HTTPS 协议,因此也允许开发者使用相对网址。这些网址会标准化为 ws: 和 wss: 内部协议。

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

Web API

Attribution Reporting API 的新增功能

Attribution Reporting API 中添加了一些功能,可通过支持解析失败调试报告来创建额外的调试功能,通过支持用于指定首选注册平台的字段来提高 API 的易用性,并提高隐私保护水平。

ChromeStatus.com 条目

Compute Pressure API

Compute Pressure API 提供表示系统 CPU 负载的高级状态。它允许实现使用正确的底层硬件指标,以确保用户可以利用所有可用的处理能力,只要系统没有处于无法管理的压力之下。

Intel 主导了此 API 的设计和实现工作,该 API 将使视频会议应用能够动态平衡功能和性能。

Compute Pressure API | 跟踪 bug #40683064 | ChromeStatus.com 条目 | 规范

这将发布 Storage Access API 的拟议扩展(向后兼容,并且已在源试用中),以允许在第三方上下文中访问未分区 Cookie 和非 Cookie 存储空间。当前的 API 仅提供对 Cookie 的访问权限,而 Cookie 的应用场景与非 Cookie 存储不同。

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

FedCM CORS 对身份断言端点的要求

由于 FedCM API 所需的属性,因此很难推断其中的提取。虽然关于账号端点的讨论仍在进行中,但大家也基本达成共识,即 ID 断言端点应使用 CORS。此更新使该提取的安全属性与 Web 平台中的其他提取更一致。

FedCM 更新:Button Mode API 源试用、CORS 和 SameSite | 跟踪 bug #40284123 | ChromeStatus.com 条目

FedCM 现在会通过 CORS 发送身份断言请求。这一变化意味着,Chrome 不再向身份断言端点发送 SameSite=Strict Cookie,但仍会发送 SameSite=None。由于向账号端点和 ID 断言端点发送不同的 Cookie 集没有意义,因此这项更改使它们保持一致。

不发送 SameSite=Strict Cookie 也与 requestStorageAccess 行为和一般跨站请求一致。

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

可互操作的 mousemove 默认操作

Chrome 允许取消 mousemove 事件,以防止其他 API(例如文本选择,甚至过去的拖放)发生。这与其他主流浏览器不一致,也不符合界面事件规范。现在,文本选择将不再是 mousemove 的默认操作。您仍然可以通过分别取消 selectstart 和 dragstart 事件来阻止文本选择和拖放。

此功能将从 Chrome 125 开始逐步推出,预计将在 Chrome 126 中向所有用户提供。

演示 | 跟踪 bug #40078978 | ChromeStatus.com 条目 | 规范

正则表达式修饰符

正则表达式修饰符可让您在本地修改模式中的 i、m 和 s 标志。

如需为子表达式启用标志,请使用 (?X:subexpr),其中 X 是 i、m 或 s 之一。如需为子表达式停用标志,请使用 (-X:subexpr)。

例如,对于不区分大小写的 i 标志:

const re1 = /^[a-z](?-i:[a-z])$/i;
re1.test("ab"); // true
re1.test("Ab"); // true
re1.test("aB"); // false

const re2 = /^(?i:[a-z])[a-z]$/;
re2.test("ab"); // true
re2.test("Ab"); // true
re2.test("aB"); // false

ChromeStatus.com 条目 | 规范

正则表达式中存在重复的命名捕获组

重复的命名捕获组可让您在不同备选项中使用相同的捕获组名称。例如

const re = /(?<year>[0-9]{4})-[0-9]{2}|[0-9]{2}-(?<year>[0-9]{4})/;

在这种情况下,year 对第 1 个备选项 ((?<year>[0-9]{4})-[0-9]{2}) 或第 2 个备选项 ([0-9]{2}-(?<year>[0-9]{4})) 有效。

ChromeStatus.com 条目 | 规范

Chrome 应用

Chrome 应用中的 Direct Sockets API

此更新在 Chrome 应用中启用了 Direct Sockets,让 Web 应用能够与网络设备和系统建立直接传输控制协议 (TCP) 和用户数据报协议 (UDP) 通信,从而帮助专用应用更轻松地从 Chrome 应用过渡到独立式 Web 应用。

ChromeStatus.com 条目 | 规范

新的源试用

FedCM Button Mode API 和 Use Other Account API

此源试用包含以下两个 FedCM API。

借助 Button Mode API,网站可以在按钮点击(例如点击登录到 IdP 按钮)时调用 FedCM。这就要求 FedCM 保证始终以可见界面进行响应,而不是像 widget 模式那样,在用户退出登录时不显示界面。在按钮模式下调用 FedCM API 会将用户引导至 IdP 登录页面(在对话框窗口中),前提是用户已退出登录。

此外,由于按钮模式是在明确的用户手势中调用的,因此与微件模式(没有此类明确意图)的界面相比,其界面也可能更加突出(例如,居中和模态)。如需详细了解 Button Mode API 的运作方式,请参阅 FedCM 更新:Button Mode API 源试用、CORS 和 SameSite

借助 Use Other Account API,身份提供方可允许用户登录其他账号。

源试用 | 演示 | 跟踪 bug #40284792 | ChromeStatus.com 条目 | 规范

可折叠设备 API

此源试用包含 Device Posture API 和 Viewport Segments Enumeration API。这些 API 旨在帮助开发者针对可折叠设备进行开发。

源试用 | 可折叠设备 API 的源试用 | ChromeStatus.com 条目 | 规范

针对带前缀的 HTMLVideoElement 全屏属性和方法的弃用试用

如果您需要更多时间来调整代码,可以通过此弃用试用重新选择支持带前缀的 HTMLVideoElement 属性和方法。

源试用 | ChromeStatus.com 条目

跳过预加载扫描

跳过预加载扫描器,以探索不提取子资源的网页的性能权衡。

预加载扫描器步骤通过实现推测性预提取,可提升具有子资源提取功能的网页的性能。不过,对于无法从此步骤中受益的网页(即没有子资源的网页),这会增加处理开销,但几乎没有好处。

对于希望通过减少此开销来获益的高级 Web 用户,此实验提供了一个页面级控件来停用预加载扫描器。通过此实验收集的数据可以评估修改后的 API 或 HTML 预加载扫描器的其他实现是否有用。

源试用 | 跟踪 bug #330802493 | ChromeStatus.com 条目 | 规范

弃用和移除

移除了权限和权限政策“window-management”的“window-placement”别名

移除了权限和权限政策“window-management”的“window-placement”别名。这是重命名字符串的更大努力的一部分,最终将弃用并移除“window-placement”。 随着 Window Management API 的不断发展,术语变更可提高描述符的持久性。

标题 | 跟踪 bug #40842072 | ChromeStatus.com 条目 | 规范

移除企业政策:NewBaseUrlInheritanceBehaviorAllowed

自 2023 年 8 月 (Chrome 118) 起,此企业政策所覆盖的基础代码更改(启用新的基础网址继承行为)已在稳定版本中启用。由于已知问题已得到解决,此企业政策已在 Chrome 125 中移除。

ChromeStatus.com 条目

移除了带前缀的 HTMLVideoElement 全屏属性和方法

自 Chrome 38 起,带前缀的 HTMLVideoElement 全屏 API 已被弃用。它们已被 Element.requestFullscreen() 取代,后者于 2018 年在 Chrome 71 中首次发布,不带前缀。

以下属性和方法将从 HTMLVideoElement 中移除:

  • webkitSupportsFullscreen
  • webkitDisplayingFullscreen
  • webkitEnterFullscreen()
  • webkitExitFullscreen()
  • webkitEnterFullScreen()(请注意 FullScreen 中“S”的大小写不同)
  • webkitExitFullScreen()

如果您的网站仍依赖于这些功能,并且您需要更多时间来更新代码,请注册本文中列出的弃用试用。

ChromeStatus.com 条目

深入阅读

想要查找更多参考信息?请参阅以下其他资源。

下载 Google Chrome

下载 Android、桌面或 iOS 版 Chrome。