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
属性让开发者能够将元素保留在顶层,以实现退出过渡。我们添加了叠加层属性,用于指明元素是否在顶层中。该属性可采用两个值:none
或 auto
。
CSS transition-behavior 属性
transition-behavior
CSS 属性是 transition
属性的详尽属性,允许在过渡中使用离散属性。通过为过渡行为指定 allow-discrete
值,离散属性现在会启动动画,并以 50% 的比例从初始值翻转到最终值。对于 display: none
和 content-visibility: hidden
是初始值或最终值之一的转场效果,将在整个转场过程中使用可见值。
CSS 网格 subgrid 值
grid-template-columns
和 grid-template-rows
的 subgrid
值现已在 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.groupBy
和 Map.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
PerformanceResourceTiming
的 deliveryType
属性会返回有关资源分发方式的信息。例如,从缓存传送的资源(当前通过 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 应用窗口具有标签栏,例如,在同一个应用中修改多个文档。这样就添加了一种新的显示模式“标签式”以及一个新的清单字段,以允许对标签栏进行自定义。
弃用和移除
此版本的 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 突出显示伪规范取代。