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 构建之后定义解析或拒绝该 Promise 的代码(Firefox bug 1845586)。

  • Date.parse() 现在接受更多日期格式

    • YYYY-MMM-DD 格式的年份 > 9999(例如 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

DOM

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 自定义状态伪类,如 :--some-state,可以匹配该元素的状态。(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 中的一项更改规定,当 scripts 属性与 service_worker 属性一起指定时,scripts 属性将被忽略。以前,Chrome 会拒绝加载同时包含这两种属性的扩展程序(Chromium bug 1418934)。有关更多信息,请参阅 background manifest 键的浏览器支持