Chrome 116 Beta 版

CSS 动画路径、往返缓存 NotRestoredReason API、文档画中画等。

除非另有说明,否则上述变更适用于 Android、ChromeOS、Linux、macOS 和 Windows 的最新 Chrome Beta 渠道版本。您可以通过提供的链接或 ChromeStatus.com 上的列表详细了解本文所列的功能。Chrome 116 Beta 版自 2023 年 7 月 19 日起推出。您可以在桌面版 Google.com 或 Android 版 Google Play 商店中下载最新版本。

CSS

此版本新增了两项 CSS 功能。

CSS 动画路径

借助动画路径,作者可以定位任何图形对象,并沿着开发者指定的路径为该对象添加动画效果。这样可实现许多强大的新转换可能性,例如使用极坐标(通过 ray() 函数)而不是 translate() 函数使用的标准矩形坐标进行定位,或沿定义的路径为元素添加动画效果。这样可以更轻松地定义复杂美观的 2D 空间过渡。路径可以指定为 circle()ellipse()rect()inset()xywh()polygon()ray()url()

显示和内容可见性动画

Chrome 116 支持在关键帧动画中使用 displaycontent-visibility 属性。借助这项支持,开发者可以创建退出动画,之后元素会自动变为 display: nonecontent-visibility: hidden,而无需编写任何 JavaScript 即可在动画结束后处理该切换。这样一来,可以完全在 CSS 中添加元素的退出动画。

Web API

AbortSignal.any()

返回一个信号,该信号会在任何源信号取消时中止。开发者可以使用此方法来合并独立的中止来源(例如用 AbortSignal.timeout() 指定的超时和与 AbortController 关联的信号),并将其传递给 fetch() 等异步 API。

为 Fetch 提供 BYOB 支持

Chrome 的 ReadableStream 实现支持为可读字节流使用自带缓冲区 (BYOB) 读取器。现在,Response.body 也是一个可读字节流,而不是“default”可读流。这使得 Fetch API 可以与 BYOB 读取器配合使用,从而减少垃圾回收开销和副本,并提高用户的响应速度。Blob.stream()现在也可受益于这项优化。

往返缓存 NotRestoredReason API

NotRestoredReason API 将通过 PerformanceNavigationTiming API 报告未从框架树结构中的 BFcache 提供页面的原因列表。

文档画中画

文档画中画添加了一个新 API,用于打开始终位于顶部的窗口,该窗口可填充任意 HTMLElements。这是对现有 HTMLVideoElement API 的扩展,仅支持将 HTMLVideoElement 放入画中画 (PiP) 窗口中。这样一来,网络开发者可以为用户提供更好的画中画体验。

权限政策来源中的扩展通配符

许可名单中的子域名通配符提供了一些有价值的灵活性,但不同于现有的通配符解析器,并且需要新的代码和规范工作。此 intent 会重复使用现有内容安全政策规范的部分内容,并允许将 scheme + wildcard domainwildcard port 列入许可名单,从而减少开销。具体而言,此 intent 会采用许可名单定义中的主机来源和架构来源(而非来源)的定义,同时要求路径部分为空(因为权限政策适用于匹配的来源)。

FedCM 软件包:Login Hint API、User Info API 和 RP Context API

此捆绑式更新支持对使用 Federated Credential Management API (FedCM) 的联合登录流程进行自定义。

借助 Login Hint API,依赖方 (RP) 可以指定有关他们希望在 FedCM 界面中显示的用户账号的提示。这主要用于为回访用户提供更好的用户体验。

借助 User Info API,身份提供方 (IdP) 可以提取用户信息,以便为回访用户打造个性化的登录体验,例如通过个性化的“使用 IdP 登录”按钮实现个性化登录体验。

借助 RP Context API,RP 可以请求 FedCM 对话框替换标题“登录”使用“注册”“使用”或“继续”,以契合用户的实际意图。

非组合鼠标和指针进入/离开事件

确保 mouseentermouseleavepointerenterpointerleave 事件 "false" 中的 event.composed 属性符合规范并修复互操作性差距。鼠标事件的界面事件规范和指针事件规范都将这些事件定义为非组合事件。几年前,这两个规范都不再使用原来的定义:https://github.com/w3c/uievents/pull/210 https://github.com/w3c/pointerevents/pull/461 除了解决了互操作性差距之外,此次更改还修复了针对这些事件的 2 倍或 3 次错误分派 以监听 Chromium 中的 shadow DOM 事件,

移除对 document.open 沙盒的继承

目前,当 document.open 定位到其他窗口时,系统会将调用方的沙盒标记应用于被调用方。在此次更改后,这种情况就不会再发生了。

在 NavigationTiming 中报告严重 CH 导致重启

网站可以通过将特定 Client Hint 添加到 Critical-CH HTTP 响应标头中,表明它对网页至关重要。如果 Critical-CH HTTP 响应标头中列出的提示可以包含(但不包含)在最初发送的 HTTP 请求中,那么执行此操作将触发连接重启。此 intent 建议将 readonly attribute DOMHighResTimeStamp criticalCHRestart; 添加到 PerformanceNavigationTiming 接口。

正在进行源试用

在 Chrome 116 中,您可以选择参与以下新的源试用

COOP:限制属性

Cross-Origin-Opener-Policy 用于切断弹出式窗口和 opener 之间的关系,以提高安全性。"restrict-properties"是一个提议的值,该值会限制关系而不是完全切断关系。与 COEP 配对时,它将启用 crossOriginIsolated。

注册参加 COOP 限制属性源试用的试用

FedCM 登录状态 API

借助 Federated Credential Management API (FedCM) 的 IdP Sign-in Status API,身份提供方 (IdP) 可在用户登录/退出时向浏览器发出信号,以便 FedCM 可以通过优化用户体验来提升其隐私属性。

报名参加 FedCM 登录状态源试用

EditContext API

EditContext API 可简化将 Web 应用与高级文本输入法(例如 VK 形状书写、手写面板、语音识别和 IME 组合)集成的过程。该 API 改进了无障碍功能和性能,并为基于网络的编辑器解锁了新功能。

注册 EditContext API 源试用

长动画帧计时

这是对耗时较长的任务的扩展。它会测量任务及其后续渲染更新,并添加长时间运行的脚本、渲染时间以及强制布局和样式所花时间(称为布局抖动)等信息。

开发者可以通过查找主线程拥塞的原因(通常是导致 INP 不良的原因),以此诊断“运行缓慢”问题。“运行缓慢”由 INP 进行衡量。

报名参加 Long Animation Frame Timing 源试用活动