面向开发者的 Firefox 128
本文提供有关 Firefox 128 中影响开发者的变更信息。Firefox 128 于 2024 年 7 月 9 日 发布。
面向网页开发者的变更
HTML
<base>
元素的target
属性现在禁止 ASCII 换行符、制表符或<
字符,如果存在任何这些字符,则将值更改为_blank
。这可以防止使用未关闭的target
属性的悬空标记注入攻击 (Firefox 错误 1835157)。
CSS
- 现在默认情况下启用了 相对颜色语法。相对颜色语法允许您创建相对于原色值的颜色值,并且可以使用 颜色函数 在不同的 颜色空间 中更改颜色 (Firefox 错误 1900251)。
content
属性现在支持包含图像的内容的 替代文本。然后,替代文本将公开到浏览器的无障碍树中。(参见 Firefox 错误 1281158 和 Firefox 错误 1896047)。
移除
- 已删除砌体布局属性
align-tracks
和justify-tracks
。这些属性仅在 Firefox 中实现,并且最近已从规范中 删除 (Firefox 错误 1900195)。
JavaScript
- 现在支持可调整大小的
ArrayBuffer
和可增长的SharedArrayBuffer
,允许更改缓冲区的大小,而无需分配新的缓冲区并将数据复制到其中 (Firefox 错误 1884150)。相关方法和属性是- 使用
SharedArrayBuffer.prototype.grow()
方法增长SharedArrayBuffer
。缓冲区允许的最大大小使用SharedArrayBuffer()
构造函数 的options.maxByteLength
参数指定。SharedArrayBuffer.prototype.growable
和SharedArrayBuffer.prototype.maxByteLength
属性分别指示缓冲区是否可以增长及其允许的最大大小。 - 使用
ArrayBuffer.prototype.resize()
方法调整ArrayBuffer
的大小。缓冲区允许的最大大小使用ArrayBuffer()
构造函数 的options.maxByteLength
参数指定。ArrayBuffer.prototype.resizable
和ArrayBuffer.prototype.maxByteLength
属性分别指示缓冲区是否可以调整大小及其允许的最大大小。
- 使用
HTTP
- 在 默认请求和图像请求 中,HTTP
Accept
标头现在包含image/svg+xml
MIME 类型 (Firefox 错误 1711622)。 - 现在支持 RFC 9218:HTTP 的可扩展优先级方案,包括 HTTP
Priority
请求和响应标头,它允许客户端暗示通过连接发送的资源的预期相对优先级,以及 HTTP/2 和 HTTP/3PRIORITY_UPDATE
帧,这些帧允许在标头发送后更改优先级 (Firefox 错误 1865040)。
API
- 现在支持
RTCRtpReceiver.getParameters()
和RTCRtpSender.getParameters()
,它们分别返回一个描述接收器和发送器轨道上媒体编码和传输当前使用的编解码器的对象。(Firefox 错误 1534687)。 - 现在支持
Request.bytes()
和Response.bytes()
,它们分别作为一种方便的方法,可以从Request
和Response
获取Uint8Array
。(Firefox 错误 1896475)。 - 现在支持
PushMessageData.bytes()
,用于将推送消息中的数据作为Uint8Array
对象中的字节数组返回。(Firefox 错误 1897871)。 - 支持
Blob.bytes()
,用于将Blob
中的数据作为Uint8Array
对象中的字节数组返回。(Firefox 错误 1896509)。 -
现在支持
MediaKeys.getStatusForPolicy()
,用于检查 CDM 模块(用于解密受 DRM 保护的内容)是否允许根据指定的策略要求(例如系统支持的 高带宽数字内容保护 (HDCP) 版本)呈现加密的媒体数据,以获取“假设”密钥。这为应用程序提供了一种简单机制,可以在不创建媒体密钥会话或获取实际许可证的情况下,提前了解是否允许以最佳分辨率播放。(Firefox 错误 1878714)。 - 现在支持
RTCRtpTransceiver.setCodecPreferences()
,用于设置 WebRTC 本地对等体能够用于解码接收数据的编解码器,并按其首选编解码器顺序排列。网页应用程序可以使用它来使远程对等体选择首选编解码器,并禁用特定编解码器的协商,包括用于重传、冗余和前向纠错的编解码器。(Firefox 错误 1396922)。 - 声明式影子 DOM 的序列化,包括
ShadowRoot.getHTML()
和Element.getHTML()
方法以及相关的属性ShadowRoot.serializable
和HTMLTemplateElement.shadowRootSerializable
。 - 现在默认情况下支持
CSSPropertyRule
接口,它表示 CSS@property
at-rule。该接口允许您获取 CSS 自定义属性的值,包括name
、syntax
、inherits
和initialValue
,这些自定义属性使用@property
at-rule 定义 (Firefox 错误 1864818)。 - 现在默认情况下支持
registerProperty()
方法。它允许您通过 JavaScript 定义 CSS 自定义属性,这类似于在 CSS 中使用@property
at-rule (Firefox 错误 1864818)。
媒体、WebRTC 和 Web 音频
移除
- 已删除非标准的
HTMLMediaElement.seekToNextFrame()
方法,现在不再受任何浏览器的支持。(Firefox 错误 1336404)。
WebDriver 符合性 (WebDriver BiDi、Marionette)
通用
- 我们现在支持扩展的“unhandledPromptBehavior”功能,它可以是字符串 (WebDriver classic) 或 JSON 对象 (WebDriver BiDi)。对象类型为 WebDriver BiDi 提供了更多功能,例如处理“beforeunload”提示。(Firefox 错误 1884650)
WebDriver BiDi
- 添加了对 WebDriver 会话的“BiDi 标志”的支持,以与 WebDriver BiDi 规范保持一致。这使得能够识别为 WebDriver BiDi 创建或升级的会话。(Firefox 错误 1898719)
- 添加了对
network.continueRequest
命令的几个参数的支持,这使得能够在请求通过网络发送之前修改请求的标头、cookie、方法和正文。(Firefox 错误 1850680) - 添加了对
permissions.setPermission
命令中的userContext
参数的支持,这使得能够将权限隔离到特定的用户上下文 (在 Firefox 中实现为容器)。(Firefox 错误 1894217) - 修复了
browsingContext.navigate
中的一个错误,该错误会导致导航错误加载错误页面,并导致后续命令失败。(Firefox 错误 1878690) - 我们修复了为重定向发出
network.responseCompleted
事件的顺序。原始请求的responseCompleted
现在始终在重定向的事件之前发出。(Firefox 错误 1879580) - 为了与当前 Firefox 的行为保持一致,我们引入了一个解决方法,即不会对使用“storage.setCookie”命令添加的、与目标上下文加载页面相同域的 cookie 进行分区。(Firefox 错误 1898222)
- 如果指定文件不存在,
input.setFiles
命令已更新为抛出UnsupportedOperation
错误。(Firefox 错误 1887644)
Marionette
- 添加了对 WebDriver 会话的“HTTP 标志”的支持,以与 WebDriver 经典规范保持一致。这允许识别为 WebDriver 经典创建的会话。(Firefox 错误 1884090)
- 添加了对 WebDriver 经典中的权限 API 的支持。(Firefox 错误 1524074)
面向附加组件开发者的变更
- 添加了使用
declarativeNetRequest.updateStaticRules
在静态声明式网络请求规则集中启用和禁用规则的功能,并使用declarativeNetRequest.getDisabledRuleIds
列出静态规则集中的禁用规则。(Firefox 错误 1810762) - 静态声明式网络请求规则(通过
declarative_net_request
清单键 定义)现在可以在包含无法识别的属性但其他方面有效的情况下加载。(Firefox 错误 1886608) - 在
declarativeNetRequest
中引入了MAX_NUMBER_OF_DYNAMIC_RULES
和MAX_NUMBER_OF_SESSION_RULES
。这些属性表示扩展程序可以添加的动态规则和会话范围规则的最大数量。它们替换了现在已弃用的MAX_NUMBER_OF_DYNAMIC_AND_SESSION_RULES
。(Firefox 错误 1894128) - 使用 SOCKS4 时,
proxy.settings
属性proxyDNS
的默认值为false
,使用 SOCKS5 时为true
。以前,它默认情况下对 SOCKS4 和 SOCKS5 都是false
。(Firefox 错误 1741375) - 现在支持
webRequest.onAuthRequired
通过在addListener
参数extraInfoSpec
中指定"asyncBlocking"
来异步处理身份验证请求。(Firefox 错误 1889897) - 添加了 optional_host_permissions 清单键。此键允许运行时请求访问(在扩展安装后由用户授予的访问权限),用于扩展中读取或修改主机数据的 API。(Firefox 错误 1766026)
- 非标准 Web API 事件
overflow
和underflow
已被弃用。在 Firefox 131 发布之前,应从扩展文档中删除对这些事件的使用。(Firefox 错误 1898445) - 现在支持脚本在网页执行环境中运行。这是通过对
scripting
API 的ExecutionWorld
中的MAIN
的支持、对contentScripts.register()
API 的world
添加以及对content_scripts
清单键中的world
的支持来提供的。(Firefox 错误 1736575) scripting
API 现在可以使用about:blank
、about:srcdoc
和data:
URL 将脚本和 CSS 注入沙盒页面。这在 Firefox 错误 1475831 中的scripting.executeScript
、scripting.insertCSS
和scripting.removeCSS
以及 Firefox 错误 1853411 中的scripting.registerContentScripts
和scripting.updateContentScripts
中实现,通过在scripting.RegisteredContentScript
中引入matchOriginAsFallback
来实现。- 内容脚本现在可以在 沙盒 的
http
、https
和file:
URL 上运行。(Firefox 错误 1411641) - 清单键
content_scripts
现在支持match_origin_as_fallback
,并且contentScripts.register
支持matchOriginAsFallback
,使脚本能够在about:
、data:
和blob:
页面中注入,即使由于使用 CSP 或 iframe 沙盒而导致文档来源不透明。(Firefox 错误 1475831 和 Firefox 错误 1896669)。此外,使用content_scripts
清单键注册的脚本现在只能在match_origin_as_fallback
为true
时在blob:
页面中运行。(Firefox 错误 1897113) - 添加了对
declarativeNetRequest.RuleCondition
属性domainType
的支持。(Firefox 错误 1797408) - 包含 清单键
browser_specific_settings.gecko
中无法识别的属性的扩展程序现在将加载并显示警告。以前,这些扩展程序在安装时会出错。这确保如果添加了新的browser_specific_settings.gecko
属性,使用该新属性的扩展程序将从该版本的 Firefox 开始加载。(Firefox 错误 1757293)
实验性网页功能
这些功能已在 Firefox 128 中发布,但默认情况下处于禁用状态。若要尝试使用这些功能,请在 about:config
页面中搜索相应的首选项,并将其设置为 true
。你可以在 实验性功能 页面上找到更多此类功能。
-
image/jxl
MIME 类型在默认请求和图像请求的 Accept 标头中:image.jxl.enabled
。HTTPAccept
标头在 默认请求和图像请求 中可以配置为指示对image/jxl
MIME 类型支持。(Firefox 错误 1711622) -
具有独立分区状态的 Cookie (CHIPS):
network.cookie.CHIPS.enabled
。CHIPS 或“分区 cookie”允许开发者使用Set-Cookie
HTTP 标头的partitioned
指令将 cookie 选中到分区存储中。设置后,cookie 对每个顶级站点具有单独的存储,并且只能在其设置的同一顶级站点及其子域中读取。这阻止了跨站点跟踪,同时仍然允许合法使用第三方 cookie,例如在站点的不同子域之间持久化嵌入地图或聊天小部件的状态。(Firefox 错误 1898253) -
隐私保护归因 API (PPA):
dom.origin-trials.private-attribution.state
。PPA API 提供了一种替代用户跟踪的广告归因方法,使用新的navigator.privateAttribution
对象,以及saveImpression()
和measureConversion()
方法。在 说明文档 中详细了解 PPA。此实验可以通过 来源试用 为网站启用,或者通过将首选项设置为1
在浏览器中启用。(Firefox 错误 1900929)
旧版本
- Firefox 127 for developers
- Firefox 126 for developers
- Firefox 125 for developers
- Firefox 124 for developers
- Firefox 123 for developers
- Firefox 122 for developers
- Firefox 121 for developers
- 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