Chrome 117 Beta 版

CSS 网格 subgrid,支持 CSS 的进入和退出动画、数组分组、迭代器帮助程序等。

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

CSS

此版本新增了六项 CSS 功能。前三个属性是为离散属性启用转换的一部分,启用进入和退出动画

@starting-style 规则

此 @ 规则允许作者在第一次样式更新时开始 CSS 过渡。

首次为元素更新样式时,或者显示类型从 none 更改为其他类型时,CSS 过渡不会触发从初始样式开始的过渡。这是为了避免意外地从初始样式转换。要从第一次样式更新开始过渡,您现在可以从 @starting-style 规则中应用样式。例如,以下 CSS 在第一次对 div 进行样式更新时,开始将背景色从绿色过渡到绿黄色:

div { 
  transition: background-color 0.5s; 
  background-color: lime; 
} 

@starting-style {
  div { 
    background-color: green; 
  } 
}

叠加层属性

overlay 属性让开发者能够将元素保留在顶层,以实现退出过渡。我们添加了叠加层属性,用于指明元素是否在顶层中。该属性可采用两个值:noneauto

CSS transition-behavior 属性

transition-behavior CSS 属性是 transition 属性的详尽属性,允许在过渡中使用离散属性。通过为过渡行为指定 allow-discrete 值,离散属性现在会启动动画,并以 50% 的比例从初始值翻转到最终值。对于 display: nonecontent-visibility: hidden 是初始值或最终值之一的转场效果,将在整个转场过程中使用可见值。

CSS 网格 subgrid 值

grid-template-columnsgrid-template-rowssubgrid 值现已在 Chrome 中实现。此值允许嵌套网格使用在其父项上定义的轨道,无需为行和/或列创建新的轨道定义。

CSS 文本换行:pretty

CSS text-wrap 属性的 pretty 值针对最佳布局(而非速度)进行了优化。它要用于正文文本,因此需要多行内容。通过使用 pretty,开发者可以明确地选择采用速度比 wrap 慢的布局方法,该方法针对性能进行了优化。Chrome 中的当前实现针对孤立内容进行了优化,以防止在段落文本底部显示单个字词。

在 Chrome 117 中尝试此文本换行演示:pretty,看看该值会如何改变文本呈现效果。

include-intrinsic-size: auto 不支持

此功能扩展了现有的 contain-intrinsic-size 语法,还将 auto && none 包含在内。

Web API

数组分组

数组分组是一种极其常见的操作,最好通过 SQL 的 GROUP BY 子句和 MapReduce 编程(最好是 map-group-reduce)来加以说明。通过将数据组合成组的功能,开发者可以计算高阶数据集,例如同类群组的平均年龄或网页的每日 LCP 值。此功能通过添加 Object.groupByMap.groupBy 静态方法来实现此目的。Object 方法会返回一个普通对象,其中组是属性键。Map 方法会返回一个 Map,其中键可以是任意值。

通过 Clear-Site-Data 标头清除客户端提示

网站现在将能够使用 Clear-Site-Data: "clientHints" 清除客户端提示缓存。现在,当您选择“Cookie”“cache”或“*”时,系统也会清除客户端提示由同一标头定位。这是因为,如果用户在界面客户端提示中清除 Cookie,那么客户端提示缓存就是一个缓存,因此要分别与通配符目标保持一致。

Clear-Site-Data 标头通配符语法

网站现在将可以通过发送 Clear-Site-Data: "*" 清除所有存储目标(“Cookie”、“缓存”和“存储”)。请注意,Chrome 不支持清除“executionContexts”不过,如果我们以后添加了此类 任何定位“*”的标头也会清除它们

customElements.getName

customElements.getName() 方法会返回指定自定义元素定义的标记名称。

迭代器帮助程序

迭代器帮助程序是迭代器原型上的新方法,可支持迭代器的常规使用和消费。

使 CaptureController 派生自 EventTarget 接口

CaptureController 接口可用于进一步操控屏幕截图会话。今后,与拍摄会话相关的事件应该会分派到该控制器上。为了能够管理此类事件的监听器,CaptureController 上提供了 EventTarget 方法。

PerformanceResourceTiming deliveryType

PerformanceResourceTimingdeliveryType 属性会返回有关资源分发方式的信息。例如,从缓存传送的资源(当前通过 transferSize 公开)以及由上一个页面预提取的导航。

在网址 setter 中进行端口溢出检查

设置 url.port 时,系统会检查端口值。所有超出 16 位数字限制的值都不再有效。例如,以下脚本在更改后的行为有所不同:

u = new URL("http://test.com"); 
u.port = 65536; 
console.log(u.port); 

更改之前,输出为 65536。更改后,输出结果将为 80。

Private State Token API

这是一个新的 API,用于在不使用第三方 Cookie 等跨网站永久标识符的情况下,跨网站传播有限的私密信号。一旦弃用第三方 Cookie,依赖第三方 Cookie 的防欺诈方法将不起作用。Private State Token API 不会生成或定义反欺诈信号:这取决于相应的第一方和令牌颁发者。相反,该 API 通过对这些信号中传输的信息施加限制来维护隐私。此 API 基于隐私通行证协议的一个变体,该协议目前正由 IETF 标准化。可以视为 Privacy Pass 协议中一种会在网络上公开的形式。API 规范将针对新版本和令牌类型进行更新,并且会与 Privacy Pass 工作组规范保持同步。预期变更将发生在底层加密协议和令牌颁发代码中:我们预计面向开发者的颁发和兑换 Fetch API 不会发生任何变化。Private State Token API 以前称为 Trust Token API。重命名后,可以更准确地捕获底层语义,并突出在隐私保护方面给用户带来的好处。

与网址标准兼容的 IPv4 嵌入式 IPv6 主机解析器

我们将更新解析 IPv4 嵌入式 IPv6 主机解析器的行为,以严格遵循网页网址标准。针对 IPv6 地址引入的限制如下:

  • 嵌入的 IPv4 地址应始终由 4 部分组成。
  • 少于 4 部分的地址(如“http://[::1.2]”)将失效。该功能是 网址 Interop 2023 的一部分。

网址:允许“%00”作为有效的网址路径

如果网址的路径部分包含“%00”,则 Chrome 目前会将该网址视为无效(或 null),这不符合网址标准。例如,以下测试在 Chrome 中会失败,因为 new URL(...) 会抛出“无效网址”异常。

assertEquals(new URL("http://example.com/%00").pathname, "/%00"); 

根据网址标准,网址路径中的任何字符或字节序列都不应使网址无效。这项变更会更新 Chrome 以遵循该标准。

WebRTC RTP 标头扩展控件

扩展 WebRTC RTCRtpTransceiver API 以控制协商哪些 RTP 标头扩展。

VideoEncoder 中的每帧量化器

添加“量化器”VideoEncoderBitrateMode(适用于 VideoEncoder)。 通过这种方式,您可以为 AV1、VP9 和 AVC 视频编解码器的每个帧指定量化器参数。

requestDevice()”中的 WebUSB exclusionFilters 选项

借助 navigator.usb.requestDevice() 中的 exclusionFilters 选项,网站开发者可以从浏览器选择器中排除某些设备。此参数可用于排除符合范围更广的过滤条件但不受支持的设备。

正在进行源试用

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

使用 Shared Brotli 进行压缩字典传输

此功能增加了以下支持:将指定的先前响应用作 Brotli 压缩 HTTP 响应的外部字典。

注册参加 CompressionDictionaryTransport 源试用

WebSQL 弃用试用

WebSQL 即将从 Chrome 中移除。建议依赖它的网站迁移到通过 Wasm 使用 SQLite

通过此弃用试用,需要更多时间完成迁移的开发者能够继续使用 WebSQL,直到 Chrome 123(2024 年 3 月)为止。注册参加 WebSQL 弃用试用

标签页式 Web 应用

允许 Web 应用窗口具有标签栏,例如,在同一个应用中修改多个文档。这样就添加了一种新的显示模式“标签式”以及一个新的清单字段,以允许对标签栏进行自定义。

注册标签页式 Web 应用源试用

弃用和移除

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

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

弃用 unload 事件

Chrome 117 将开始废弃 unload 事件处理脚本。如果您的网站使用了这些参数,强烈建议您阅读关于废弃 unload 的专题帖子,以了解更多详情。

弃用 TLS SHA-1 服务器签名

Chrome 将不再支持在 TLS 握手期间使用 SHA-1 对服务器签名进行签名算法。这不会影响服务器证书(已被移除)或客户端证书(将继续受到支持)中的 SHA-1 支持。

此版本的 Chrome 移除了四项功能。

[WebRTC] 取消发布基于回调的旧版 getStats()

RTCPeerConnection 有两个版本的 getStats(),第一个版本符合规范,通过解析 promise 返回报告;另一个是非标准版本,通过回调作为第一个参数返回截然不同的报告。基于回调的方法现已移除。

如需详细了解迁移以及后续操作方法,请参阅旧版 getStats() 迁移指南

移除了 WebRTC getStats datachannelIdentifier 的 -1 值

WebRTC getStats API 公开了 dataChannelIdentifier 属性。它将不再提供值“-1”在建立数据通道连接之前查询统计信息的情况下。相反,字典成员将被省略。

移除了 WebRTC getStats encoderImplementation 和 dederImplementation 中的“unknown”

WebRTC getStats API 公开了出站和入站视频的编码器和解码器实现名称。在对视频帧进行编码或解码之前查询统计信息的情况下,系统将不再提供“unknown”值。相反,字典成员将被省略。

CSS 属性 -webkit-highlight

移除旨在突出显示文本但从未标准化的 CSS 属性 -webkit-highlight。它对 Chromium 没有明显影响(已经过解析,但从未用于呈现内容)。该属性已于 2014 年从 WebKit 中移除,在 MDN 上被标记为已弃用,并在最近被 CSS 突出显示伪规范取代。