面向开发者的 Firefox 121
本文提供有关影响开发者的 Firefox 121 更改的信息。Firefox 121 于 2023 年 12 月 19 日 发布。
针对 Web 开发者的更改
HTML
-
现在支持
<iframe>
元素的 延迟加载,允许开发人员暗示某些<iframe>
元素应该只在它们变为可见时(如果变为可见)才加载。这可以通过减少页面加载时需要获取的资源来加快初始加载时间(某些<iframe>
元素可能根本不需要获取)。可以通过loading
属性在<iframe>
元素上提供提示,或者在 JavaScript 中使用HTMLIFrameElement.loading
。(Firefox 错误 1622090).
CSS
text-wrap
属性已更新,支持balance
和stable
值。balance
值用于短内容块,例如标题,并将确保内容在跨多行分布时保持平衡且易于阅读。stable
值确保可编辑内容在用户编辑时不会重新排列 (Firefox 错误 1731541).- 现在支持
:has()
选择器,通常称为父选择器。它允许开发人员根据相关元素应用样式,例如li:has(ul)
将匹配包含子列表的列表,或者h1:has(+ p)
将匹配其后紧跟着段落的标题。 - 现在
text-indent
CSS 属性支持each-line
和hanging
属性值 (Firefox 错误 784648),使开发人员可以更轻松地指定某些文本缩进样式。此外,开发人员现在可以组合多个text-indent
属性值以获得更大的创意,例如text-indent: 3em hanging each-line
。
JavaScript
- 现在支持
Promise.withResolvers()
静态方法。这在与返回的Promise
相同的范围内公开resolve
和reject
回调函数,允许在构造 promise 后定义解析或拒绝 promise 的代码 (Firefox 错误 1845586). Date.parse()
现在接受几个额外的日期格式- 对于
YYYY-MMM-DD
格式,年份 > 9999(例如19999-Jan-01
)(Firefox 错误 1858851) MMM-DD-YYYY
(例如Jan-01-1970
)(Firefox 错误 1863489)- 非 ISO 日期格式的毫秒(例如
Jan 1 1970 10:00:00.050
)(Firefox 错误 1863125) - 在被拒绝的格式开头出现星期几,例如
Wed, 1970-01-01
Wed, 1970-Jan-01
foo 1970-01-01
可行 (Firefox 错误 1617562).
- 对于
- 其他
Date.parse()
修复YYYY-M-DD
和YYYY-MM-D
不再被视为 GMT,因为 ISO 日期YYYY-MM-DD
会被视为 GMT (Firefox 错误 1783731).- 所有格式的毫秒在 3 位数字后被截断,而不是四舍五入 (Firefox 错误 746529).
API
- 现在支持
sendOrder
属性,该属性是WebTransportSendStream
接口的一部分,允许在创建流后读取和更改传出的 WebTransport API双向流的相对优先级。请注意,这不能用于修改单向流的优先级,因为 Firefox 将它们实现为WritableStream
而不是WebTransportSendStream
。(有关更多信息,请参阅 Firefox 错误 1853444。)
DOM
HTMLInputElement.showPicker()
现在适用于 Android 上的<input type="week">
和<input type="month">
元素 (Firefox 错误 1853797).
WebAssembly
- WebAssembly 现在通过新的
return_call
和return_call_indirect
来支持尾调用优化,它们是call
指令的替代方案。这提高了性能,减少了堆栈空间的使用,并增强了与使用尾调用的编程语言的兼容性。(Firefox 错误 1858855)。
WebDriver 一致性(WebDriver BiDi,Marionette)
WebDriver BiDi
- 添加了
browsingContext.contextDestroyed
事件,该事件在丢弃浏览上下文时发出 (Firefox 错误 1694390). - 为
script.callFunction
和script.evaluate
命令添加了对userActivation
参数的支持,这些命令允许在模拟用户操作时评估 JavaScript。(Firefox 错误 1845488)。 - 为
browsingContext.userPromptOpened
事件添加了对defaultValue
字段的支持,该字段允许用户检索提示的默认值 (Firefox 错误 1851761). - 将
browsingContext.captureScreenshot
命令的viewportOptions
参数重命名为boxOptions
(Firefox 错误 1859258). - 删除了
browsingContext.captureScreenshot
命令的scrollIntoView
参数,有利于下面的origin
参数 (Firefox 错误 1862649). - 添加了对
browsingContext.captureScreenshot
命令的origin
参数的支持,该参数允许定义屏幕截图的来源和边界。接受的值是"document"
和"viewport"
(Firefox 错误 1840999). - 在序列化
Window
对象时,序列化值现在包含一个context
属性,该属性设置为Window
对象的上下文 ID,该 ID 也可以与 Marionette 交换以引用特定窗口和框架 (Firefox 错误 1841049). - 修复了嵌套在数据结构(数组、映射等)中的节点的序列化失败的错误 (Firefox 错误 1861000).
- 修复了
browsingContext.navigate
命令可能返回不正确的导航 ID 的错误 (Firefox 错误 1861655).
Marionette
- 添加了对序列化和反序列化
Window
和Frame
对象的支持 (Firefox 错误 1274251).
实验性 Web 功能
这些功能已在 Firefox 121 中新发布,但默认情况下处于禁用状态。要试验它们,请在 about:config
页面上搜索相应的首选项,并将其设置为 true
。您可以在 实验性功能 页面上找到更多此类功能。
- 自定义元素状态伪类:
dom.element.customstateset.enabled
-
自定义元素可以通过
states
属性以CustomStateSet
的形式公开其内部状态。CSS 自定义状态伪类,例如:--somestate
,可以匹配该元素的状态。(Firefox 错误 1861466) showPicker()
方法用于 HTML 选择元素:dom.select.showPicker.enabled
-
HTMLSelectElement.showPicker()
方法以编程方式启动<select>
元素的浏览器选择器,由用户交互触发。(Firefox 错误 1854112)
针对附加组件开发者的更改
- 修复了一个错误,该错误导致在 manifest.json 的
background
键中包含service_worker
和scripts
声明时,后台页面无法启动(Firefox 错误 1860304)。注意: 巧合的是,Chrome 121 中的变化导致在与
service_worker
属性一起指定时忽略scripts
属性。以前,Chrome 拒绝加载包含这两个属性的扩展程序(Chromium 错误 1418934)。有关更多信息,请参阅background
清单键的浏览器支持。
旧版本
- Firefox 120 for developers
- Firefox 119 for developers
- Firefox 118 for developers
- Firefox 117 for developers
- Firefox 116 for developers
- Firefox 115 for developers
- Firefox 114 for developers
- Firefox 113 for developers
- Firefox 112 for developers
- Firefox 111 for developers
- Firefox 110 for developers
- Firefox 109 for developers
- Firefox 108 for developers
- Firefox 107 for developers
- Firefox 106 for developers
- Firefox 105 for developers
- Firefox 104 for developers
- Firefox 103 for developers
- Firefox 102 for developers
- Firefox 101 for developers
- Firefox 100 for developers
- Firefox 99 for developers
- Firefox 98 for developers
- Firefox 97 for developers
- Firefox 96 for developers
- Firefox 95 for developers
- Firefox 94 for developers
- Firefox 93 for developers
- Firefox 92 for developers
- Firefox 91 for developers
- Firefox 90 for developers