面向开发者的 Firefox 55
Firefox 55 于 2017 年 8 月 8 日发布。本文列出了对 Web 开发者有用的关键更改。
面向 Web 开发者的更改
开发者工具
- 添加了按列值和其他属性筛选网络请求的功能 (Firefox bug 1041895,Firefox bug 1354508,Firefox bug 1354507),以及使用正则表达式 (Firefox bug 1354495)。
- 使在 网络监控器 (Firefox bug 862855) 中显示和隐藏列成为可能。
- 将远程 IP (Firefox bug 1344523)、协议 (Firefox bug 1345489)、方案 (Firefox bug 1356867)、Cookie 和设置 Cookie 列 (Firefox bug 1356869) 添加到网络监控器中。
- 现在支持
SourceMap
HTTP 头 (以前版本支持已弃用的X-SourceMap
头,请参阅 Firefox bug 1346936)。
HTML
- 在
contenteditable
设置为true
的元素现在使用<div>
元素来分隔不同的文本行,使 Firefox 与其他现代浏览器保持一致 (Firefox bug 1297414)。有关更多详细信息,请参阅 标记生成中的差异。 - 在 Nightly 中默认启用
dom.forms.datetime
(Firefox bug 1366188)。
CSS
- 默认情况下公开
transform-box
属性 (Firefox bug 1208550)。 - 实现了
frames()
定时函数 (Firefox bug 1248340)。 - 实现了
text-justify
属性 (Firefox bug 1343512,Firefox bug 276079)。 - [css-grid]
fit-content
在repeat()
(Firefox bug 1359060) 中意外地为完整的钳制大小保留空间。 float
/clear
逻辑值(inline-start
和inline-end
)以前已实现但已在发布渠道中关闭,现在默认情况下在所有渠道中可用 (Firefox bug 1253919)。- 已完全删除
layout.css.variables.enabled
首选项,这意味着 CSS 变量 功能始终启用,不再能够禁用 (Firefox bug 1312328)。 - 实现了专有的
-moz-context-properties
属性 (Firefox bug 1058040)。 - 在
linear-gradient()
(Firefox bug 1363292) 中,没有度数单位的零 (0) 角度值无法正确解释。 - 现在支持
::cue
伪元素;它匹配在媒体元素中呈现的文本提示 (Firefox bug 1318542)。
SVG
- 已实现
<radialGradient>
fr
属性 (Firefox bug 1240275)。
JavaScript
- 现在默认情况下启用
SharedArrayBuffer
和Atomics
对象。有关 JavaScript 共享内存和原子的介绍,请参阅 JavaScript 新并行原语初体验。 - 现在在 对象解构 中支持剩余运算符 (
...
),并且扩展运算符 (...
) 现在可以在 对象字面量 (对象剩余/扩展属性,Firefox bug 1339395) 中使用。 - 现在支持 异步生成器方法 (Firefox bug 1353693)。
- 现在,
String.prototype.toLocaleLowerCase()
和String.prototype.toLocaleUpperCase()
方法现在支持可选的locale
参数,以指定用于特定于区域设置的大小写映射的语言标记 (Firefox bug 1318403)。 - 现在,
Intl.Collator
对象支持caseFirst
选项 (Firefox bug 866473)。 - 现在,Intl API 使用浏览器的默认区域设置,而不是操作系统的默认区域设置,前提是未提供任何区域设置 (Firefox bug 1346674)。
- 模板调用站点对象 现在根据它们的原始字符串列表在每个领域中进行规范化 (Firefox bug 1108941)。
TypedArray
构造函数(如Int8Array
、Float32Array
等)已更新为 ES2017。它们现在使用ToIndex
操作,并允许没有参数的构造函数,这些构造函数将返回零长度的类型化数组 (Firefox bug 1317383)。
API
新 API
- 在 Firefox 53 中,协作调度后台任务 API(也称为 **后台任务 API** 或
requestIdleCallback
API)已在首选项后面可用,现在默认情况下已启用。此 API 允许您安排任务在浏览器确定有空闲时间可用(在下次重绘之前)时执行,以便您的代码可以使用该时间,而不会造成明显的性能延迟 (Firefox bug 1314959)。 - 现在,Windows 上默认情况下启用了 WebVR 1.1 API(并且在 Nightly 中在 macOS 上可用)。此 API 将虚拟现实设备(例如 Oculus Rift 或 HTC Vive 等头戴式显示器)公开给 Web 应用程序,使开发人员能够将显示器中的位置和移动信息转换为 3D 场景中的移动,并将内容呈现到此类显示器中。
- 已添加 Intersection Observer API,它提供了一种异步观察目标元素与祖先元素或顶级文档的 视口 交集变化的方法 (Firefox bug 1321865)。
DOM
Window
属性scrollX
和scrollY
(以及它们的别名pageXOffset
和pageYOffset
)已更新为亚像素精度。这些不再返回整数,而是返回浮点值,更准确地描述了亚像素精度显示器上的滚动位置 (Firefox bug 1151421)。如果有必要,您可以使用Math.round()
将它们转换为整数。MediaQueryList
(以及其他相关功能)已更新为匹配最新规范。请参阅 Firefox bug 1354441,还可以参阅MediaQueryList
和MediaQueryListEvent
。- 修改列表值的
DOMTokenList
方法现在会自动修剪空白并删除重复的标记 (Firefox bug 869788,另请参阅 修剪空白并删除重复项)。 HTMLInputElement
的maxLength
属性现在可以在创建等效 HTML 后使用 JavaScript 动态更改 (Firefox bug 1352799)。URL()
构造函数不再接受DOMString
作为其基准(第二个参数)——它只接受USVString
。它仍然可以使用现有的URL
对象作为基准,该对象将自身字符串化为对象的href
属性 (Firefox bug 1368950)。
DOM 事件
- 根据最新的 DOM 规范,
Document.createEvent()
方法支持的事件类型已更新 (Firefox bug 1251198)。 - 现在,
MessageEvent.origin
属性值类型为USVString
,而不是DOMString
,并且MessageEvent.source
属性现在接受MessageEventSource
值(可以是 WindowProxy、MessagePort
或ServiceWorker
对象)(Firefox bug 1311324). - 捏合缩放手势现在已映射到
wheel
事件以及 +Ctrl
键。 此映射的实现是为了允许开发人员使用移动屏幕/触控板上的捏合缩放手势(鼠标滚轮 +Ctrl
通常会缩放)来实现简单的缩放功能 (Firefox bug 1052253).
选择 API
- 已更新 选择 API,使其在选择移动到编辑主机内部时,在编辑主机获得焦点的方面与其他浏览器具有同等性 (Firefox bug 1318312)。 有关更多详细信息,请参阅 选择 API 在编辑主机焦点更改方面的行为。
- 已更新
Selection
API 以匹配一些最近的规范更改 (Firefox bug 1359371)- 现在
collapse()
和extend()
方法的offset
参数是可选的。 - 现在
collapse()
方法的node
参数是可为空的。 - 现在
containsNode()
方法的partialContainment
参数是可选的。 - 已添加
deleteFromDocument()
方法。
- 现在
- 此外,在
Selection
API 中,Selection.empty()
和Selection.setPosition()
已添加为Selection.removeAllRanges()
和Selection.collapse()
的别名,以实现网络兼容性以及与 WebKit/Blink 的同等性 (Firefox bug 1359387). - 已实现并公开到
Window
上下文 (Firefox bug 1286717) 中的StorageManager.persist()
和StorageManager.persisted()
方法,它们属于 存储 API。
工作线程
- 现在可以使用标识符
name
属性来创建工作线程和共享工作线程。 请参阅Worker()
和SharedWorker()
构造函数以及DedicatedWorkerGlobalScope
和SharedWorkerGlobalScope
接口。 (Firefox bug 1364297). setTimeout()
和setInterval()
现在将受到后台标签中跟踪脚本的最小间隔限制——请参阅 跟踪超时脚本的限制 (Firefox bug 1355311).
服务工作线程/推送
- 现在,发送到服务工作线程上下文(例如
onmessage
的事件对象)的消息由MessageEvent
对象表示,以保持与其他网络消息功能的一致性。 - 现在,
PushManager.subscribe()
方法接受ArrayBuffer
和 Base64 编码的字符串作为applicationServerKey
值 (Firefox bug 1337348).
网络音频 API
AudioContext
接口的非标准构造函数(它接受一个字符串枚举值,指示使用上下文的用途)会导致在提供options
参数时抛出错误。 我们已删除非标准构造函数。 但是,请注意,Firefox 尚未支持options
参数,并且目前正在忽略该参数 (Firefox bug 1361475).
WebRTC
getUserMedia()
现在默认情况下提供立体声音频流(如果源设备提供立体声声音);专门请求单声道输入的支持将在 Firefox 56 中提供。 这目前仅适用于桌面;移动版 Firefox 目前不支持立体声音频输入源 (Firefox bug 971528).- 现在,
getUserMedia()
媒体功能、约束和设置autoGainControl
和noiseSuppression
与规范匹配;以前它们是moz
前缀的 (Firefox bug 1366415). - 使用空约束集调用时,
getUserMedia()
错误地返回了NotSupportedError
,而不是TypeError
。 这个问题已得到修复 (Firefox bug 1349480). - 以下新的 WebRTC 统计信息可用:
framesEncoded
、pliCount
、nackCount
和firCount
(Firefox bug 1348657). - 以前称为
mozRtt
的RTCInboundRTPStreamStats
字典字段已重命名为roundTripTime
,以匹配规范;此外,其行为已调整以匹配标准:它包含一个双精度浮点值,该值基于 RTCP 接收器报告中的 RTCP 时间戳估计往返时间,以秒为单位(按照 RFC 3550,第 6.4.1 节 中描述的算法)。 (Firefox bug 1344970)。 但是,请注意,此属性很快将移动到另一个字典 (RTCRemoteInboundRTPStreamStats
) (Firefox bug 1380555). RTCRTPStreamStats
字典现在包含firCount
、pliCount
和nackCount
字段。 这些字段返回可以用于确定连接可靠性的低级信息 (Firefox bug 1348657).RTCOutboundRTPStreamStats
字典现在包含framesEncoded
字段,该字段报告已成功为流编码的帧数;借助此信息,您可以计算帧速率 (Firefox bug 1348657).- 在 Android 上,现在有一个 pref 用于开启硬件视频编码,以提高视频通话性能并节省电池电量。 默认情况下将在 Firefox 56 中启用 (Firefox bug 1265755).
加密媒体扩展 API
- 尽管规范中不允许这样做,但 Firefox 目前允许在不安全的上下文中使用加密媒体扩展。 这种情况将在不久的将来发生改变,从 Firefox 55 开始,在执行此操作时,弃用警告将输出到 网络控制台。 (Firefox bug 1361000).
- Firefox 目前不要求在传递给
Navigator.requestMediaKeySystemAccess()
的suggestedConfigurations
参数中包含至少一个MediaKeySystemCapabilities
对象,而规范却强制要求这样做。 从 Firefox 55 开始,在未指定支持的编解码器的情况下指定任何音频或视频配置时,警告将输出到网络控制台。 很快,如果未为音频和视频中的一个或多个包含有效的配置,则会抛出异常 Firefox bug 1368683).
WebGL
- 现在,
WEBGL_compressed_texture_s3tc_srgb
扩展可用于 WebGL 和 WebGL2 上下文 (Firefox bug 1325113).
安全性
- 现在,地理位置 API 仅适用于 安全上下文 (Firefox bug 1072859).
- 现在,存储 API 仅适用于 安全上下文 (Firefox bug 1268804).
- 现在,在 localhost 上允许加载混合内容 (Firefox bug 903966).
- 远程 JAR 文件的加载再次被禁用 (Firefox bug 1329336).
插件
- 现在,Flash 内容采用“点击激活”方式 (Firefox bug 1317856)。 此功能立即对所有 Nightly 用户和 50% 的测试版用户生效。 对于 Firefox 55 发布版本,计划是在发布后 2 周内为 5% 的用户激活此功能,在发布后 4 周内为 25% 的用户激活,在发布后 6 周内为 100% 的用户激活 (Firefox bug 1365714).
- Flash 和其他插件不再可以从任何 URL 方案加载,除了
http://
和https://
(Firefox bug 1335475).
其他
- 现在,Linux 上的 Firefox 可以使用
-headless
标志以无头模式运行(请参阅 Firefox bug 1356681)。
从 Web 平台中移除的内容
HTML
xml:base
属性不再可以用于设置出现在style
属性中的路径的基 URL,例如——<div xml:base="https://example.com/" style="background:url(picture.jpg)"></div>
(Firefox bug 1350521).- 在 Firefox 55+ 中,
<style>
元素的scoped
属性已被隐藏在内容文档的 pref (layout.css.scoped-style.enabled
) 后面,因为没有其他浏览器支持它。 - Gecko 中已删除对
<meta>
元素的http-equiv
属性的模糊MSThemeCompatible
值的支持。 没有其他现代浏览器支持它,并且它会导致兼容性问题 (Firefox bug 966240).
CSS
- 已删除专有的
:-moz-bound-element
伪类 (Firefox bug 1350147). - 已删除
text-decoration-line
的专有-moz-anchor-decoration
值 (Firefox bug 1355734).
API
UIEvent.isChar
属性从未得到除 Firefox 之外的任何浏览器的支持,并且从未得到除 macOS 外的任何平台的完全实现。 因此,它在 Firefox 55 中被删除,以与其他浏览器保持一致。- 已从平台中删除专有的 Firefox OS 设备存储 API (Firefox bug 1299500).
- 非标准的
Window.find()
方法(用于打开浏览器的“查找”对话框)中的aShowDialog
参数已被移除(Firefox bug 1348409)。 HTMLFormElement.requestAutoComplete()
方法已被移除(参见HTMLFormElement
)(Firefox bug 1270740)。- 非标准的、Mozilla 特定的 WebRTC 报价选项
mozDontOfferDataChannel
和mozBundleOnly
已从RTCOfferOptions
字典中移除,不再受RTCPeerConnection.createOffer()
支持(Firefox bug 1196974)。 - 对专有 Firefox OS
Audio Channels API
的支持已从HTMLMediaElement
和AudioContext
中移除(Firefox bug 1358061)。
SVG
SVGZoomEvent
和SVGZoomEvents
接口已从 SVG2 规范和 Gecko 中移除,以及onzoom <svg>
属性(Firefox bug 1314388)。
面向附加组件和 Mozilla 开发者的更改
WebExtensions
contextMenus.create()
的command
属性允许你从上下文菜单中打开浏览器动作弹出窗口、页面动作弹出窗口和侧边栏。- 代理 API
chrome_settings_overrides
键允许你覆盖浏览器的首页。browser_style
属性允许你为 浏览器动作弹出窗口、侧边栏 和 选项页面 提供类似浏览器的样式。- 权限 API
旧版本
- Firefox 54 for developers
- Firefox 53 for developers
- Firefox 52 for developers
- Firefox 51 for developers
- Firefox 50 for developers
- Firefox 49 for developers
- Firefox 48 for developers
- Firefox 47 for developers
- Firefox 46 for developers
- Firefox 45 for developers
- Firefox 44 for developers
- Firefox 43 for developers
- Firefox 42 for developers
- Firefox 41 for developers
- Firefox 40 for developers
- Firefox 39 for developers
- Firefox 38 for developers
- Firefox 37 for developers
- Firefox 36 for developers
- Firefox 35 for developers
- Firefox 34 for developers
- Firefox 33 for developers
- Firefox 32 for developers
- Firefox 31 for developers
- Firefox 30 for developers
- Firefox 29 for developers
- Firefox 28 for developers
- Firefox 27 for developers
- Firefox 26 for developers
- Firefox 25 for developers
- Firefox 24 for developers