CSS 网格 subgrid、CSS 的进入和退出动画支持、数组分组、迭代器帮助程序等。
除非另有说明,否则上述更改均适用于最新的 Chrome Beta 版(Android、ChromeOS、Linux、macOS 和 Windows)。如需详细了解此处列出的功能,请通过所提供的链接或 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 grid subgrid 值
grid-template-columns
和 grid-template-rows
的 subgrid
值现已在 Chrome 中实现。此值允许嵌套网格使用其父级中定义的轨迹,而无需为行和/或列创建新的轨迹定义。
CSS 文本换行:美观
CSS text-wrap
属性的 pretty
值会针对最佳布局(而非速度)进行优化。它针对的是正文文本,因此需要多行内容。通过使用 pretty
,开发者会明确选择速度可能比 wrap
慢的布局方法,从而优化性能。Chrome 中目前的实现是针对孤立词进行优化,以防止在一段文本底部显示单个字词。
在 Chrome 117 中,不妨尝试运行这个 text-wrap: 的详情演示:,看看该值会如何改变文本的呈现方式。
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 分发类型
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 协议的网络公开形式。我们将针对新版本和令牌类型更新 API 规范,并将与 Privacy Pass 工作组规范保持同步。预期变更将出现在底层加密协议和令牌颁发代码中:我们预计面向开发者的发布和兑换 Fetch API 不会发生变化。Private State Token API 以前称为 Trust Token API。重命名是为了更准确地捕获底层语义,并向用户突显隐私保护方面的优势。
与网址标准兼容的 IPv4 嵌入式 IPv6 主机解析器
我们将更新解析 IPv4 嵌入式 IPv6 主机解析器的行为,以严格遵循网页网址标准。以下是针对 IPv6 地址的限制:
- 嵌入的 IPv4 地址应始终由 4 部分组成。
- 少于 4 个部分(例如
http://[::1.2]
)的地址将不再有效。此功能是 2023 年网址互操作工具的一部分。
网址:允许将“%00”用作有效网址路径
目前,如果网址的路径部分包含“%00”(或 null),这不符合网址标准,Chrome 便会认定该网址无效。例如,在 Chrome 中,以下测试会失败,因为 new URL(...)
会抛出“Invalid 网址”(无效网址)异常。
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 弃用试用
我们正在从 Chrome 中移除 WebSQL。我们建议依赖 SQLite 的网站通过 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 “未知”
WebRTC getStats API 提供了出站和入站视频的编码器和解码器实现名称。如果在对视频帧进行编码或解码之前查询统计信息,该参数将不再提供“unknown”值。相反,字典成员将被省略。
CSS 属性 -webkit-highlight
移除用于突出显示文字但从未标准化的 CSS 属性 -webkit-highlight
。它在 Chromium 中没有明显的影响(它已经过解析,但从未用于呈现内容)。该属性已于 2014 年从 WebKit 中移除,并在 MDN 上被标记为已弃用,并已在近期被 CSS 突出显示伪规范取代。