Firefox 129 发布说明(面向开发者)

本文档提供了关于 Firefox 129 中影响开发者的变更信息。Firefox 129 于 2024 年 8 月 6 日发布。

Web 开发人员的变更

CSS

  • 支持 `@starting-style` CSS at-rule。这允许您为元素上设置的属性定义起始值,当元素接收到其首次样式更新时,您可以从中进行过渡。目前不支持从 display: none; 进行动画(Firefox bug 1834876Firefox bug 1834877)。
  • 支持 `transition-behavior` CSS 属性。通过将值设置为 `allow-discrete`,您可以指定离散属性(如 displayoverlay)是否可以进行过渡。(Firefox bug 1901645)。
  • 已将 `-webkit-font-feature-settings` 实现为标准 `font-feature-settings` 属性的别名(Firefox bug 1595620)。

JavaScript

  • 现在支持 `Float16Array` 类型化数组,以及用于从 DataView 读取和设置 Float16Array 值的 DataView.prototype.getFloat16()DataView.prototype.setFloat16(),以及静态方法 Math.f16round(),可用于将数字舍入到 16 位。这种新类型对于与 GPU 共享数据非常有用,尤其是在需要权衡精度以换取内存消耗的情况下。(Firefox bug 1903329。)
  • 正则表达式现在可以在不同的 交替项 中为 命名捕获组 使用相同的名称。这是允许的,因为交替项中的只有一个捕获组会匹配,因此在多个交替项中声明的名称只能引用一个捕获组。名称在特定的交替项内以及在模式的其余部分中仍然必须是唯一的。(Firefox bug 1903288。)

HTTP

  • 在 Windows 11、Linux 和 Android 10+ 上,现在可以使用操作系统提供的 DNS 解析器解析 HTTPS DNS 记录。这可以确保,如果用户在设备上启用了 DNS over HTTPS (DoH),即使浏览器未启用,该功能也会被使用。此功能允许使用 HTTP/3,而无需使用 Alt-Svc 标头,并支持在 HTTPS DNS 记录存在时自动将 HTTP 请求升级为 HTTPS。最重要的是,它现在即使在仅在设备上启用 DoH 而不在浏览器中启用 DoH 时,也允许使用 Encrypted Client Hello (ECH) 隐私功能。(Firefox bug 1906239)。

API

  • 现在支持已弃用的 `textInput` 事件,这使用户可以运行依赖这些事件的旧版库或框架的 Web 应用。beforeinput 事件取代了 textInput,新应用程序应始终使用 beforeinput 事件。(Firefox bug 1901923。)
  • 现在支持默认的 .toJSON() 方法 GeolocationCoordinates.toJSON()GeolocationPosition.toJSON(),这使得可以使用 JSON.stringify() 序列化 GeolocationCoordinatesGeolocationPosition 对象(Firefox bug 1890706)。
  • `CSSPageDescriptors` 现在受支持,并且用作 `CSSPageRule.style` 的类型,而不是 `CSSStyleDeclaration` — 这与当前规范一致。这确保 `CSSPageDescriptors` 只公开与 `@page` 相关的属性,而不是所有属性,并且还解决了在 CSS `@page` at-rule 中设置页面 size 未在 `CSSPageRule.style` 中反映的问题。(Firefox bug 1890842Firefox bug 1867106。)
  • `MediaCapabilities.decodingInfo()` 现在可以获取特定加密媒体配置的解码信息,以及未加密媒体的解码信息,使应用程序能够提前判断配置是否受支持,以及它是否能流畅地播放内容并提高电源效率。变更包括在方法的 `configuration` 参数上新增了一个 `keySystemConfiguration` 属性,该属性定义了用于加密媒体的密钥系统的属性,以及在返回的对象上新增了一个 `keySystemAccess` 属性,这是一个 MediaKeySystemAccess 对象,可用于创建密钥和解码内容以供播放。(Firefox bug 1898344)。
  • Firefox 现在会在触发任何正在进行的异步 XMLHttpRequest 事件之前,为同步 XMLHttpRequest 触发事件。这修复了与其他浏览器长期存在的行为差异。请注意,虽然这应该可以修复一些网站,但对于期望同步 XMLHttpRequest 具有旧的“非阻塞”行为的网站,它也可能导致性能下降。如果您的网站应该通过此更改得到修复但仍出现相关问题,请提交 bug。(Firefox bug 697151。)
  • Web Crypto API 支持 Ed25519 数字签名算法,并可在 SubtleCryptosign()verify()generateKey()importKey()exportKey() 方法中使用(Firefox bug 1804788)。
  • 现在支持 PerformanceResourceTiming 接口的 contentTyperesponseStatus 属性,分别指示已获取资源的 content type 和获取资源时返回的 HTTP 响应状态码。(Firefox bug 1800443Firefox bug 1796785。)
  • 现在支持 `RTCDTMFSender.canInsertDTMF` 属性。它允许您检查 WebRTC 发送器是否可以将 DTMF 音调插入到传出连接中。如果支持,您可以使用 `RTCDTMFSender.insertDTMF()` 插入 DTMF 音调。(Firefox bug 1623193)。

移除

WebDriver 一致性 (WebDriver BiDi, Marionette)

移除

  • 默认情况下,CDP (Chrome DevTools Protocol) 已禁用。可以通过 remote.active-protocols 首选项重新启用。您可以在以下 博客文章 中了解更多信息。(Firefox bug 1882089

WebDriver BiDi

  • 添加了对 `network.setCacheBehavior` 命令的支持,该命令允许配置浏览器全局或针对一组顶级浏览上下文绕过网络缓存。(Firefox bug 1901032Firefox bug 1906100
  • 添加了对 `beforeUnload` 类型提示的支持,现在可以像其他用户提示一样处理它们。(Firefox bug 1824220
  • 现在支持 `network.provideResponse` 命令的所有参数,当在 `beforeRequestSent` 阶段使用时,例如 `body` 参数允许返回模拟响应。(Firefox bug 1853882
  • `browsingContext.userPromptOpened` 现在包含 `handler` 字段,该字段包含为触发事件的提示配置的用户提示处理程序。(Firefox bug 1904822
  • `BrowsingContextInfo` 类型现在将提供一个 `originalOpener` 字段,该字段是“opener”浏览上下文的上下文 ID。例如,如果新上下文是通过链接(即使带有 rel=noopener)、window.open 等创建的,该字段将被设置。如果新浏览上下文没有相关的 opener,该字段将设置为 null。(Firefox bug 1898004
  • 现在为数据 URL 的请求创建网络事件(beforeRequestSentresponseStartedresponseCompleted)。在 Firefox 129 中,只列出导航请求。(Firefox bug 1805176
  • 我们添加了对 `browsingContext.close` 的 `promptUnload` 参数的支持,该参数允许在通过此命令关闭上下文时绕过“beforeunload”提示。(Firefox bug 1862380
  • 修复了 `network.continueRequest` 中的一个 bug,该 bug 导致无法为同一个标头设置多个值。(Firefox bug 1904379
  • 修复了 `unhandledPromptBehavior` 功能的 bug,该功能无法与仅 BiDi 的会话一起使用。(Firefox bug 1907935
  • 修复了 `session.end` 和 `browser.close` 的一个 bug,该 bug 在没有 Marionette 客户端连接时会意外失败。(Firefox bug 1890091
  • 修复了 `browsingContext.navigate` 的一个 bug,该 bug 在“beforeunload”上启动同文档导航时会无法解析。(Firefox bug 1879163
  • 改进了 `browser.close` 命令,使其在关闭顶级浏览上下文时丢弃所有“beforeunload”提示。(Firefox bug 1873196
  • 修复了 `browsingContext.userPromptOpened` 事件中的一个 bug,该事件会意外丢失 `defaultValue` 字段(Firefox bug 1859814
  • 修复了 `network.responseCompleted` 事件在身份验证流程中的一个问题,该事件发出的次数比规范要求的要多。整个 HTTP 身份验证流程只需要一个 responseCompleted(或 fetchError)事件。(Firefox bug 1906106
  • 改进了 `browser.removeUserContext` 命令,使其跳过所有“beforeunload”提示。(Firefox bug 1876062