Firefox 121 的开发者说明

本文提供了有关 Firefox 121 中影响开发者的变更信息。Firefox 121 于 2023 年 12 月 19 日发布。

为 Web 开发者带来的变化

HTML

  • <iframe> 现已支持懒加载,这允许开发者提示特定的 <iframe> 仅在可见时才进行加载。这可以减少页面加载时需要获取的资源(某些 <iframe> 可能根本不需要获取)以加快初始加载的时间。提示可以通过 <iframe> 元素上的 loading 属性或 JavaScript 中的 HTMLIFrameElement.loading 属性提供。(Firefox bug 1622090)。

CSS

  • 已更新 text-wrap 属性,添加了对 balancestable 值的支持。balance 值用于短的内容块(例如标题),它将确保内容在多行上分布时平衡且易于阅读。stable 值确保可编辑的内容在用户编辑时不会被重排(Firefox bug 1731541)。
  • 现已支持 :has() 选择器(通常被称为父选择器)。它允许开发者根据相关联的元素为某个元素应用样式,例如,li:has(ul) 将匹配包含子列表的列表,h1:has(+ p) 将匹配后面紧跟段落的标题。
  • 现已支持 text-indent CSS 属性的 each-linehanging 属性值(Firefox bug 784648),以允许开发者更轻松地指定某些文本缩进样式。此外,开发者现在可以结合多个 text-indent 属性值以产生更多创意,例如 text-indent: 3em hanging each-line

JavaScript

  • 现已支持 Promise.withResolvers() 静态方法。该方法将 resolvereject 回调函数暴露在与返回的 Promise 相同的作用域中,允许在其构造之后定义兑现或拒绝该 promise 的代码(Firefox bug 1845586)。

  • Date.parse() 现在接受几种额外的日期格式:

    • 年份大于 9999 的 YYYY-MMM-DD 格式(例如 19999-Jan-01)(Firefox bug 1858851

    • MMM-DD-YYYY 格式(例如 Jan-01-1970)(Firefox bug 1863489

    • 非 ISO 日期格式的毫秒值(例如 Jan 1 1970 10:00:00.050)(Firefox bug 1863125

    • 现在会忽略格式开头的星期,例如:

      • Wed, 1970-01-01
      • Wed, 1970-Jan-01

      星期不需要是正确的,或者根本不是星期几;例如,foo 1970-01-01 也是有效的(Firefox bug 1617562)。

  • 其他 Date.parse() 的修复:

    • YYYY-M-DDYYYY-MM-D 不再被假定为 GMT,就像 ISO 日期 YYYY-MM-DD 一样(Firefox bug 1783731)。
    • 所有格式的毫秒值都被截断为 3 位数,而不是进行四舍五入(Firefox bug 746529)。

API

WebAssembly

  • WebAssembly 现已支持尾调用优化,使用新的 return_callreturn_call_indirect 替代 call 指令。这提高了性能,减少了堆栈空间的使用,并增强了与使用尾调用的编程语言的兼容性。(Firefox bug 1858855)。

WebDriver 一致性(WebDriver BiDi、Marionette)

WebDriver BiDi

Marionette

  • 添加了对 WindowFrame 对象的序列化和反序列化的支持(Firefox bug 1274251)。

实验性 Web 特性

以下特性是在 Firefox 121 中新推出的,但默认情况下处于禁用状态。要尝试这些特性,请在 about:config 页面上搜索相应的首选项并将其设置为 true。你可以在实验性特性页面上找到更多此类特性。

自定义元素状态伪类:dom.element.customstateset.enabled

自定义元素可以通过 states 属性将其内部状态暴露为 CustomStateSet。CSS 自定义状态伪类(例如 :--somestate)可以匹配该元素的状态。(Firefox bug 1861466

HTML select 元素的 showPicker() 方法:dom.select.showPicker.enabled

HTMLSelectElement.showPicker() 方法以编程方式运行浏览器用于 <select> 元素的选择器,该方法需要由用户交互触发。(Firefox bug 1854112

为附加组件开发者带来的变化

  • 修复了当 manifest.json 的 background 键包含 service_workerscripts 声明时会导致后台页面无法启动的错误(Firefox bug 1860304)。

    备注: 顺便说一下,Chrome 121 中的更改会导致在指定了 service_worker 属性时忽略 scripts 属性。以前,Chrome 拒绝加载同时包含这两个属性的扩展(Chromium bug 1418934)。有关更多信息,请参阅清单 background 键的浏览器支持

更早期的版本