CSS 网格子网格、CSS 的进入和退出动画支持、数组分组、迭代器辅助函数等。
除非另有说明,否则所述变更适用于 Android、ChromeOS、Linux、macOS 和 Windows 的最新 Chrome Beta 渠道版本。如需详细了解此处列出的功能,请点击提供的链接或访问 ChromeStatus.com 上的列表。Chrome 117 于 2023 年 8 月 16 日发布 Beta 版。您可以在桌面设备上访问 Google.com,或在 Android 设备上访问 Google Play 商店,下载最新版本。
CSS
此版本新增了六项 CSS 功能。前三个属性是为离散属性启用过渡效果(可实现进入和退出动画)的一部分。
@starting-style 规则
此 at 规则允许作者在首次样式更新时启动 CSS 过渡。
在元素首次样式更新时,或者当显示类型从 none 更改为其他类型时,CSS 过渡不会触发从初始样式的过渡。这是为了避免从初始样式发生意外转换。为了开始从第一种样式更新过渡,您现在可以在 @starting-style 规则中应用样式。例如,以下 CSS 会在 div 的第一次样式更新时启动从绿色到青柠色的 background-color 过渡:
div {
transition: background-color 0.5s;
background-color: lime;
}
@starting-style {
div {
background-color: green;
}
}
overlay 属性
借助 overlay 属性,开发者可以将元素保留在顶层,以便进行退出过渡。添加了 overlay 属性,用于指示元素是否位于顶层,该属性可以采用两个值:none 或 auto。
CSS transition-behavior 属性
transition-behavior CSS 属性是 transition 属性的普通写法,允许在过渡中使用离散属性。通过为 transition-behavior 指定 allow-discrete 值,离散属性现在将开始动画,并在 50% 时从初始值切换到最终值。对于 display: none 和 content-visibility: hidden 是初始值或最终值之一的过渡,在整个过渡期间都将使用可见值。
CSS 网格 subgrid 值
Chrome 现已实现 grid-template-columns 和 grid-template-rows 的 subgrid 值。此值允许嵌套网格使用其父级上定义的轨迹,而不是为行、列或两者创建新的轨迹定义。
CSS text-wrap: pretty
CSS text-wrap 属性的 pretty 值会针对最佳布局(而非速度)进行优化。它适用于正文,因此需要多行。通过使用 pretty,开发者明确选择了一种可能比 wrap 慢的布局方法,后者针对性能进行了优化。Chrome 中的当前实现针对孤行进行了优化,以防止在一段文本的底部显示单个字词。
在 Chrome 117 中,试试这个 text-wrap: pretty 演示,看看该值如何改变文本呈现方式。
contain-intrinsic-size: auto none 支持
此功能扩展了现有的 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”“缓存”或“*”成为同一标头的目标时,客户端提示也会被清除。这是因为,如果用户在界面中清除了 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 基于 Privacy Pass 协议的变体,该协议正在由 IETF 进行标准化。它可以被视为 Privacy Pass 协议的一种 Web 公开形式。API 规范将针对新版本和新类型的令牌进行更新,并会与 Privacy Pass 工作组规范保持最新。预计会发生变化的是底层加密协议和令牌签发代码:我们预计面向开发者的签发和兑换 Fetch API 不会发生变化。Private State Token API 以前称为 Trust Token API。我们对其进行了重命名,以便更准确地反映其底层语义,并突出其对用户隐私的保护作用。
与网址标准兼容的 IPv4 嵌入式 IPv6 主机解析器
解析 IPv4 嵌入式 IPv6 主机解析器的行为将更新为严格遵循 Web 网址标准。对 IPv6 地址引入的限制如下:
- 嵌入式 IPv4 地址应始终由 4 个部分组成。
- 少于 4 个部分的地址(例如
http://[::1.2])将不再有效。此功能是 URL Interop 2023 的一部分。
网址:允许将“%00”作为有效网址路径
目前,如果网址的路径部分包含“%00”(或 null),Chrome 会认为该网址无效,这不符合网址标准。例如,以下测试在 Chrome 中会失败,因为 new URL(...) 会抛出“网址无效”异常。
assertEquals(new URL("http://example.com/%00").pathname, "/%00");
根据网址标准,网址路径中的任何字符或字节序列都不应导致网址无效,而此项变更会更新 Chrome,使其遵循该标准。
WebRTC RTP 标头扩展程序控制
扩展 WebRTC RTCRtpTransceiver API,以便控制协商哪些 RTP 标头扩展。
VideoEncoder 中的每帧量化器
为 VideoEncoder 添加了“量化器”VideoEncoderBitrateMode。
这样,您就可以为 AV1、VP9 和 AVC 视频编解码器的每一帧指定量化器参数。
requestDevice() 中的 WebUSB exclusionFilters 选项
navigator.usb.requestDevice() 中的 exclusionFilters 选项可让 Web 开发者从浏览器选择器中排除某些设备。它可用于排除符合更宽泛过滤条件但不受支持的设备。
正在进行的源试用
在 Chrome 117 中,您可以选择参与以下新的源试用。
使用共享 Brotli 的压缩字典传输
此功能增加了对使用指定过往响应作为 Brotli 压缩 HTTP 响应的外部字典的支持。
注册 CompressionDictionaryTransport 源试用。
WebSQL 弃用试用
WebSQL 即将从 Chrome 中移除。我们建议依赖于 Web SQL 的网站改用 SQLite via Wasm。
通过这项弃用试用,需要更多时间进行迁移的开发者可以继续使用 WebSQL,直到 Chrome 123(2024 年 3 月)发布。注册 WebSQL 弃用试用。
标签页式 Web 应用
允许 Web 应用窗口具有标签栏,例如,在同一应用中编辑多个文档。这会添加一个新的显示模式“标签页式”和一个新的清单字段,以便自定义标签栏。
弃用和移除
此版本的 Chrome 引入了下列弃用和移除项。请访问 ChromeStatus.com,查看计划弃用、当前弃用和之前移除的功能列表。
此版本的 Chrome 弃用了 2 项功能。
弃用 unload 事件
Chrome 117 将开始弃用 unload 事件处理脚本。如果您的网站使用了这些功能,强烈建议您阅读关于弃用 unload 的专门博文,了解更多详情。
弃用 TLS SHA-1 服务器签名
Chrome 将停止支持在 TLS 握手期间使用 SHA-1 进行服务器签名的签名算法。这不会影响服务器证书中的 SHA-1 支持(已移除)或客户端证书中的 SHA-1 支持(继续受支持)。
此 Chrome 版本移除了 4 项功能。
[WebRTC] 取消发布基于回调的旧版 getStats()
RTCPeerConnection 有两个版本的 getStats(),一个版本符合规范,通过解析 promise 返回报告;另一个版本不符合标准,通过回调作为第一个参数返回一个截然不同的报告。基于回调的 API 现已移除。
如需详细了解迁移以及需要更多时间时该怎么做,请参阅旧版 getStats() 迁移指南。
移除了 WebRTC getStats datachannelIdentifier 的 -1 值
WebRTC getStats API 会公开 dataChannelIdentifier 属性。在建立 datachannel 连接之前查询统计信息时,它将不再提供值“-1”。而是会省略字典成员。
移除了 WebRTC getStats encoderImplementation 和 decoderImplementation 中的“unknown”
WebRTC getStats API 会公开出站和入站视频的编码器和解码器实现名称。在视频帧编码或解码之前查询统计信息时,它将不再提供“unknown”值。而是会省略字典成员。
CSS 属性 -webkit-highlight
移除旨在突出显示文本但从未标准化的 CSS 属性 -webkit-highlight。它在 Chromium 中没有明显效果(它会被解析,但绝不会用于呈现内容)。该属性已于 2014 年从 WebKit 中移除,在 MDN 上被标记为已弃用,并且最近已被 CSS 突出显示伪规范取代。