Chrome 120 Beta 版

CSS 遮盖、放宽 CSS 嵌套规则、使用 <details> 元素(Media Session API 的 enterpictureinpicture 操作)创建手风琴模式。

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

CSS

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

适用于已注册自定义属性的 CSS <image> 语法

支持将 <image> 语法用于通过 @propertyregisterProperty() 注册的自定义属性。<image> 语法可用于将自定义属性的值限制为 url() 值和生成的图片(如渐变)。

针对已注册的自定义属性的 CSS <transform-function><transform-list> 语法

支持将 <transform-function><transform-list> 语法用于通过 @propertyregisterProperty() 注册的自定义属性。

该语法可用于限制表示转换的自定义属性的值。这也使得直接在这些注册的自定义属性上使用转场和动画。

媒体查询:脚本功能

脚本媒体功能用于查询当前文档是否支持脚本语言,例如 JavaScript。有效选项包括“enabled”“first-only”和“none”。不过,“仅初始”永远不会在浏览器中匹配。

:dir() 伪类选择器

:dir() CSS 伪类选择器会根据方向(该方向取决于 HTML dir 属性)来匹配元素。

:dir(ltr) 用于匹配从左到右的文本方向。 :dir(rtl) 匹配文本方向为从右到左的元素。

它不等同于 [dir] 属性选择器,因为它与从具有 dir 属性的祖先实体继承的方向匹配,并且它与使用 dir=auto 计算得出的方向匹配(根据具有强方向性的文本中的第一个字符确定方向)。

CSS 指数函数

添加了 CSS 指数函数:pow()sqrt()hypot()log()exp()(符合“CSS 值”和“单位级别 4”规范)。

CSS 遮盖

CSS mask 及相关属性(如 mask-imagemask-mode)用于通过遮盖或裁剪图片的特定点来(部分或全部)隐藏元素。

此功能会取消 -webkit-mask* 属性的前缀,使其与当前规范保持一致。其中包括 mask-imagemask-modemask-repeatmask-positionmask-clipmask-originmask-sizemask-composite,以及 mask 简写形式。支持本地 mask-image 引用,序列化现在与规范匹配,接受的值现在与规范匹配(例如,对于 mask-composite,使用的是 add,而不是 source-over。)

宽松的 CSS 嵌套

对 CSS 嵌套实现的这项更改允许嵌套样式规则从元素(例如 h1)开始,而不是要求在前面添加 & 符号或用 is() 封装。以下示例在规范中有效,并且适用于 Chrome 120。

.card {
  h1 {
    /* h1 does not start with a symbol */
  }
}

HTML

<details> 上使用名称属性的手风琴模式

此功能添加了使用一系列 HTML <details> 元素构建手风琴的功能。它会向 <details> 元素添加一个名称属性。使用此属性时,多个名称相同的 <details> 元素构成一个组。同一组中最多只能有一个元素处于打开状态。

Web API

允许将 ArrayBuffer 传递到 VideoFrame、AudioData、EncodedVideoChunk、EncodedAudioChunk、ImageDecoder 构造函数

这将允许在不复制副本的情况下分离数组缓冲区,并在 VideoFrame、ImageDecoder、EncodedVideoChunk、EncodedAudioChunk、AudioData 中使用相应的缓冲区。

CSS 字体加载 API FontFaceSet:check() 方法

FontFaceSetcheck() 方法可验证是否可以使用指定字体显示文本,而不尝试使用 FontFaceSet 中尚未完成加载的字体。这样一来,用户便可以安全地使用字体,而无需日后触发字体替换。

关闭请求和 CloseWatcher

关闭请求是一个新概念,涵盖用户使用桌面设备上的 Esc 键或 Android 设备上的返回手势或按钮关闭当前打开的内容的请求。将它们集成到 Chrome 后有两项变化:

  • CloseWatcher,用于直接监听和响应关闭请求的新 API。
  • 升级到 <dialog>popover="" 以使用新的关闭请求框架,以便它们响应 Android 返回按钮。

专用工作器和 Storage Access API

专用工作器将继承父级上下文的存储空间访问状态。因此,如果文档通过 document.requestStorageAccess() 获得存储空间访问权限,然后创建了专用 worker,则 Worker 也将拥有存储空间访问权限(并且能够访问未分区 Cookie)。

FedCM:Error API 和 AutoSelectedFlag API

旨在帮助开发者和用户更好地了解身份验证流程的专用 API。这两个 API 都是在用户获得权限以通过身份提供方登录网站或应用(在此情况下称为依赖方 (RP))后触发的。换言之,在用户点击 Continue as 按钮后。

借助 Error API,如果用户的登录尝试失败,身份提供方可以与浏览器分享相关原因,以便用户和 RP 开发者均可获得最新信息。

借助 AutoSelectedFlag API,身份提供方和 RP 开发者都可以更好地了解登录用户体验,并相应地评估效果和细分指标。

如需了解详情,请参阅 FedCM Chrome 120 博文

Fenced Frames 功能更新

Privacy Sandbox 内的 Protected Audience API 中为 Protected Audience 广告尺寸宏提供了一个额外的格式选项。通过“选择启用”功能,您可以使用宏来指定赢得竞价的广告的尺寸,使其显示在广告网址中,例如:

https://ad.com?width={/%AD_WIDTH%}&height={/%AD_HEIGHT%}

为了与 Protected Audience 中其他类型的宏(例如 deprecatedReplaceInURNregisterAdMacro() 使用的宏)更加一致,在 Chrome 120 中,我们添加了一项功能,即除了当前格式之外,还可以使用 ${AD_WIDTH} 和 ${AD_HEIGHT} 作为这些宏的格式。

自动信标现在将会发送到所有注册的网址。以前,只有在调用 setReportEventDataForAutomaticBeacons() 时指定的目的地才会接收自动信标,即使该目的地在其 Worklet 中针对 reserved.top_navigation 调用 registerAdBeacon() 也是如此。现在,任何针对 reserved.top_navigation 调用 registerAdBeacon() 的目的地都将获得自动信标,但只有 setReportEventDataForAutomaticBeacons() 中指定的目的地才会获得自动信标数据和信标。现在,setReportEventDataForAutomaticBeacons() 中的 once 参数将确定数据是否发送一次,而不是确定整个信标是否发送一次。

交叉观察器滚动边距

Intersection Observer scrollMargin 允许开发者观察嵌套滚动容器(当前被滚动容器裁剪)内的目标。这是在计算交集时通过 scrollMargin 扩展容器的裁剪矩形来实现的。

权限政策违规报告

这会将 Permissions Policy API 与 Reporting API 相集成,从而允许 Web 开发者配置要向其发送权限政策违规报告的端点,从而允许网站所有者查看他们的网页中的相应字段请求了不允许使用的功能。

它还包含 Permissions-Policy-Report-Only 标头,该标头支持根据建议的政策(类似于 Content-Security-Policy-Report-Only)发送报告,以便先评估政策更改是否存在可能违反政策的情况,然后再在常规的强制模式下实施这些更改。

Media Session API:enterpictureinpicture 操作

向 Media Session API 添加 enterpictureinpicture 操作。网站可以注册操作处理程序,用于打开“画中画”或“文档画中画”窗口。

有关详情,请参阅自动为 Web 应用启用画中画功能

WebGPU f16 支持

允许在 WebGPU 着色器 (WGSL) 中使用半精度浮点类型 f16。

开发者可以使用“shader-f16”功能以及“f16”扩展为在着色器中访问 16 位浮点变量和 API。

MediaCapabilities:使用 decodingInfo() 查询 HDR 支持

扩展 Media Capabilities API,以允许通过 hdrMetadataTypecolorGamuttransferFunction 这三个新的 VideoConfiguration 字典字段检测 HDR 渲染支持。Chrome 实现了自己的色调映射算法,因此将始终针对 HDR10 (smpteSt2086) 静态元数据返回 true。目前不支持 HDR10+ (smpteSt2094-10) 和杜比视界 (smpteSt2094-40) 动态元数据,因此会返回 false。我们预计未来会增加对动态元数据的支持,因此该 API 将允许开发者为获得支持的用户选择合适的内容。

MediaStreamTrack 统计信息(视频)

此 API 可为视频类型的 MediaStreamTrack 公开帧计数器(已传送、已舍弃、总计)。音频统计信息将在单独的 Chrome 功能发布中涵盖。

Private Aggregation API:选择汇总协调器

修改了 Private Aggregation API,以提供一种机制(从供应商指定的许可名单中选择)用于载荷加密。服务选择是通过在 run()selectURL() SharedStorage 调用以及 runAdAuction()joinAdInterestGroup() Protected Audience 调用中提供一个附加选项完成的。广义方法在很大程度上与 Attribution Reporting API 的方法一致。

FedCM 中的 Login Status API

借助 Login Status API(以前称为 IdP Sign-in Status API),身份提供方可以在用户登录或退出登录时向浏览器发送信号。

FedCM 使用它来解决静默计时攻击,这样一来,FedCM 可在完全没有第三方 Cookie 的情况下运作。

此 API 将来可能会用于更多用例。

如需了解详情,请参阅这篇公告博文

视图转换:使回调不可为 null

startViewTransition 调用目前接受可选的可为 null 的回调类型,默认值为 null:startViewTransition(optional UpdateCallback? callback = null)

此功能将其更改为不可为 null 的类型:startViewTransition(optional UpdateCallback callback)

适用于 TLS 的 X25519Kyber768 密钥封装

通过部署 Kyber768 抗量子密钥协议,保护当前的 Chrome TLS 流量免受未来量子加密分析的影响。这是基于 IETF 标准的混合 X25519 + Kyber768 密钥协议。此规范和发布不在 W3C 的范围内。此密钥协议将以 TLS 加密形式发布,并且应向用户公开。

正在进行源试用

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

“优先级”HTTP 请求标头

此功能为所有 HTTP 请求添加 priority 请求标头,并在发送请求时包含请求的优先级信息。

RFC 9218(HTTP 可扩展优先级方案)定义“优先级”HTTP 请求标头,用于向源站(和中间方)发送请求优先级信号。此外,它还定义了协商流程和协议级帧,以便 HTTP/2 和 HTTP/3 传递相同优先级信息。标头只能在首次请求资源时指明资源的初始优先级,而基于帧的机制允许在事后修改优先级。标头可以端到端地连接到源服务器(并提供一种机制,如果中间方能够识别,源服务器可以替换优先级),但帧仅限于在链接级别运行。此功能专门用于支持基于标头的优先级方案。

我们提议对 Storage Access API 进行扩展(向后兼容),以允许在第三方环境中访问未分区(Cookie 和非 Cookie)存储。

用于放宽混合内容的专用网络访问权限

为了与没有全局唯一名称,因而无法获取 TLS 证书的本地网络上设备建立连接,此功能引入了一个新的 fetch() 选项,用于声明开发者的与此类设备通信,这是一项由政策控制的新功能,用于限制每个网站的访问此功能,并为服务器的预检响应提供新的标头,以提供额外的元数据。

注册以试用专用网络访问权限提示源试用

拥有对 performance.measureUserAgentSpecificMemory() 的不受限访问权限

已指定 performance.measureUserAgentSpecificMemory() 仅在跨源隔离环境中可用(在 COOP/COEP 之后)。此功能消除了 COOP/COEP 限制,以便在无法完全部署 COOP/COEP 时进行回归测试和衡量影响。请注意, performance.memory(旧版 API)不能用于此用途,因为它从未在工作器上启用。

performance.measureUserAgentSpecificMemory()

该功能会添加一个 performance.measureUserAgentSpecificMemory() 函数,用于估算网页的内存用量。要使用该 API,需要对网站进行跨源隔离。

弃用和移除

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

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

弃用并移除 Theora 支持

由于新出现的安全风险,Chrome 将不再支持桌面版 Chrome 中的 Theora 视频编解码器。Theora 的使用率较低(现在经常是错误的),因此不再需要为大多数用户提供支持。

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

移除数据:SVGUseElement 中的网址

在 SVGUseElement 中分配 data: 网址可能会导致 XSS。这也导致攻击者可以绕过可信类型。因此,我们计划取消并取消对该工具的支持。

从 CSPEE 中移除同源广泛规则强制执行

从 CSP Embedded Enforcement 中移除了针对同源 iframe 的特殊处理方式。这与对跨源 iframe 和同源 iframe 强制执行 CSP Embedded Enforcement 的行为保持一致。