Web 开发人员的变更
HTML
- 现在支持
<iframe>元素的 延迟加载,允许开发者提示特定的<iframe>元素仅在(并且如果)它们变得可见时才加载。这可以通过减少页面加载时需要获取的资源来加快初始加载时间(某些<iframe>元素可能根本不需要获取)。可以通过<iframe>元素的loading属性,或使用 JavaScript 中的HTMLIFrameElement.loading来提供此提示。(Firefox bug 1622090)。
CSS
text-wrap属性已更新,支持balance和stable值。balance值用于简短的内容块,例如标题,并确保内容在多行之间分布均匀且易于阅读。stable值确保在用户编辑时,可编辑内容不会重排(Firefox bug 1731541)。- 现在支持
:has()选择器,通常称为父选择器。它允许开发者根据相关元素来应用样式,例如,li:has(ul)将匹配包含子列表的列表,或者h1:has(+ p)将匹配后面紧跟着一个段落的标题。 text-indentCSS 属性现在支持each-line和hanging属性值(Firefox bug 784648),使开发者能够更轻松地指定某些文本缩进样式。此外,开发者现在还可以组合多个text-indent属性值以获得更多创意,例如text-indent: 3em hanging each-line。
JavaScript
-
现在支持
Promise.withResolvers()静态方法。它将resolve和reject回调函数暴露在与返回的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-01Wed, 1970-Jan-01
星期几不一定正确,甚至不需要是星期几;例如,
foo 1970-01-01也能正常工作(Firefox bug 1617562)。
-
-
其他
Date.parse()修复YYYY-M-DD和YYYY-MM-D不再被假定为 GMT,如同 ISO 日期YYYY-MM-DD一样(Firefox bug 1783731)。- 所有格式的毫秒数将被截断为 3 位数,而不是四舍五入(Firefox bug 746529)。
API
WebTransportSendStream接口的sendOrder属性现在得到支持,允许在创建后读取和更改 WebTransport API 双向流的相对优先级。请注意,这不能用于修改单向流的优先级,因为 Firefox 将它们实现为WritableStream而不是WebTransportSendStream。(有关更多信息,请参阅 Firefox bug 1853444。)
DOM
HTMLInputElement.showPicker()现在可以在 Android 上用于<input type="week">和<input type="month">元素(Firefox bug 1853797)。
WebAssembly
- WebAssembly 现在通过新的
return_call和return_call_indirect指令替代call指令来支持尾调用优化。这提高了性能,减少了堆栈空间使用,并增强了与使用尾调用的编程语言的兼容性。(Firefox bug 1858855)。
WebDriver 一致性 (WebDriver BiDi, Marionette)
WebDriver BiDi
- 添加了
browsingContext.contextDestroyed事件,该事件在浏览上下文被丢弃时发出(Firefox bug 1694390)。 - 为
script.callFunction和script.evaluate命令添加了userActivation参数支持,该参数允许在模拟用户操作的同时评估 JavaScript。(Firefox bug 1845488)。 - 为
browsingContext.userPromptOpened事件添加了defaultValue字段支持,允许用户检索提示的默认值(Firefox bug 1851761)。 - 将
browsingContext.captureScreenshot命令的viewportOptions参数重命名为boxOptions(Firefox bug 1859258)。 - 删除了
browsingContext.captureScreenshot命令的scrollIntoView参数,转而使用下面的origin参数(Firefox bug 1862649)。 - 为
browsingContext.captureScreenshot命令添加了origin参数支持,该参数允许定义截图的原点和边界。接受的值为"document"和"viewport"(Firefox bug 1840999)。 - 序列化
Window对象时,序列化值现在包含一个context属性,设置为Window对象的上下文 ID,该 ID 也可以与 Marionette 交换以引用特定的窗口和框架(Firefox bug 1841049)。 - 修复了嵌套在数据结构(数组、映射等)中的 Node 序列化失败的错误(Firefox bug 1861000)。
- 修复了
browsingContext.navigate命令可能返回错误的导航 ID 的错误(Firefox bug 1861655)。
Marionette
- 添加了对序列化和反序列化
Window和Frame对象(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_worker和scripts声明时,后台页面未能启动的错误(Firefox bug 1860304)。注意:顺带一提,Chrome 121 中的一项更改规定,当
scripts属性与service_worker属性一起指定时,scripts属性将被忽略。以前,Chrome 会拒绝加载同时包含这两种属性的扩展程序(Chromium bug 1418934)。有关更多信息,请参阅backgroundmanifest 键的浏览器支持。