Firefox 55 开发者版本说明
Firefox 55 于 2017 年 8 月 8 日发布。本文列出了对 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 和 Set-Cookie 列(Firefox bug 1356869)。
- 现已支持
SourceMapHTTP 标头(早期版本支持已弃用的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()中意外地为完整的 clamp 尺寸保留了空间(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()中,不带单位的零(0)角度值未被正确解释(Firefox bug 1363292)。 - 现已支持
::cue伪元素;它匹配媒体元素中呈现的文本提示(Firefox bug 1318542)。
SVG
<radialGradient>的fr属性已实现(Firefox bug 1240275)。
JavaScript
SharedArrayBuffer和Atomics对象现已默认启用。关于 JavaScript 共享内存和 Atomics 的介绍,请参见 初探 JavaScript 的新并行原语。- 现在对象解构中支持剩余操作符(
...),并且扩展操作符(...)现在可在对象字面量中使用(ECMAScript 第 3 阶段提案:对象 Rest/Spread 属性,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)。
- 模板调用点对象现在根据其原始字符串列表,在每个 realm 中进行规范化(Firefox bug 1108941)。
TypedArray构造函数(如Int8Array、Float32Array等)已更新至 ES2017。它们现在使用ToIndex操作,并允许不带参数的构造函数,这将返回零长度的类型化数组(Firefox bug 1317383)。
API
新 API
- 后台任务协作调度 API(也称为后台任务 API 或
requestIdleCallbackAPI)自 Firefox 53 以来一直通过首选项提供,现已默认启用。此 API 允许你安排任务在浏览器确定下次重绘前有空闲时间时执行,这样你的代码就可以利用这段时间而不会造成明显的性能延迟(Firefox bug 1314959)。 - WebVR 1.1 API 现已在 Windows 上默认开启(并在 Nightly 版本的 macOS 上可用)。该 API 向 Web 应用暴露虚拟现实设备——例如 Oculus Rift 或 HTC Vive 等头戴式显示器——使开发者能够将来自显示器的位置和移动信息转换为在 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作为其 base(第二个参数)——它只接受USVString。它仍然可以使用现有的URL对象作为 base,该对象会将其自身字符串化为对象的href属性(Firefox bug 1368950)。
DOM 事件
Document.createEvent()方法支持的事件类型已根据最新的 DOM 规范进行了更新(Firefox bug 1251198)。MessageEvent.origin属性值的类型现在是USVString,而不是DOMString,并且MessageEvent.source属性现在接受一个MessageEventSource值(可以是 WindowProxy、MessagePort或ServiceWorker对象)(Firefox bug 1311324)。- 双指缩放手势现已映射到
wheel事件加Ctrl键。实现此映射是为了让开发者能够在移动屏幕/触控板上使用双指缩放手势实现简单的缩放功能(鼠标滚轮 +Ctrl通常用于缩放)(Firefox bug 1052253)。
Selection API
-
Selection API 已经更新,以便在选区移动到编辑宿主内部时,编辑宿主获得焦点的方式与其他浏览器保持一致(Firefox bug 1318312)。更多详情请参阅 Selection API 在编辑宿主焦点变化方面的行为。
-
SelectionAPI 已更新以匹配一些最新的规范变更(Firefox bug 1359371)collapse()和extend()方法的offset参数现在是可选的。collapse()方法的node参数现在可以为 null。containsNode()方法的partialContainment参数现在是可选的。- 新增了
deleteFromDocument()方法。
-
同样在
SelectionAPI 中,为实现 Web 兼容性以及与 WebKit/Blink 的一致性,添加了Selection.empty()和Selection.setPosition()作为Selection.removeAllRanges()和Selection.collapse()的别名(Firefox bug 1359387)。 -
Storage API 的
StorageManager.persist()和StorageManager.persisted()方法已经实现并暴露给Window上下文(Firefox bug 1286717)。
Worker
- 现在可以为 Worker 和共享 Worker 创建时指定一个标识性的
name属性。请参阅Worker()和SharedWorker()构造函数,以及DedicatedWorkerGlobalScope和SharedWorkerGlobalScope接口。(Firefox bug 1364297)。 Window.setTimeout()、WorkerGlobalScope.setTimeout()、Window.setInterval()和WorkerGlobalScope.setInterval()现在对后台标签页中的跟踪脚本实行最小间隔节流——请参阅跟踪脚本的节流(Firefox bug 1355311)。
Service Worker/推送
- 发送到 Service Worker 上下文的消息(例如,作为
onmessage的事件对象)现在由MessageEvent对象表示,以与其他 Web 消息传递功能保持一致。 PushManager.subscribe()方法现在接受ArrayBuffer和 Base64 编码的字符串作为applicationServerKey的值(Firefox bug 1337348)。
Web Audio 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)。 RTCInboundRTPStreamStats字典中原名为mozRtt的字段已重命名为roundTripTime以匹配规范;此外,其行为已调整以符合标准:它包含一个双精度浮点值,该值基于 RTCP 接收方报告中的 RTCP 时间戳估算往返时间,单位为秒(遵循 RFC 3550, section 6.4.1 中描述的算法)。(Firefox bug 1344970)。但请注意,此属性即将移动到另一个字典(RTCRemoteInboundRTPStreamStats)(Firefox bug 1380555)。RTCRTPStreamStats字典现在包含firCount、pliCount和nackCount字段。这些字段返回可用于确定连接可靠性的底层信息(Firefox bug 1348657)。RTCOutboundRTPStreamStats字典现在包含framesEncoded字段,该字段报告已为该流成功编码的帧数;利用此信息,你可以计算帧率(Firefox bug 1348657)。- 在 Android 上,现在有一个首选项可以开启硬件视频编码,以提高视频通话性能并节省电池。此功能将在 Firefox 56 中默认启用(Firefox bug 1265755)。
Encrypted Media Extensions API
- 尽管规范不允许,但 Firefox 目前允许在不安全的上下文中使用加密媒体扩展(Encrypted Media Extensions)。这种情况将在不久的将来改变,从 Firefox 55 开始,当出现这种情况时,会在网络控制台中输出弃用警告。(Firefox bug 1361000)。
- 规范强制要求,传递给
Navigator.requestMediaKeySystemAccess()的suggestedConfigurations参数中必须至少包含一个MediaKeySystemCapabilities对象,但 Firefox 目前并未强制执行此要求。从 Firefox 55 开始,当指定任何音频或视频配置但未指定支持的编解码器时,网络控制台会输出警告。不久之后,若未能为音频和/或视频包含有效配置将抛出异常(Firefox bug 1368683)。
WebGL
WEBGL_compressed_texture_s3tc_srgb扩展现在可用于 WebGL 和 WebGL2 上下文(Firefox bug 1325113)。
安全
- Geolocation API 现在仅在安全上下文中可用(Firefox bug 1072859)。
- Storage API 现在仅在安全上下文中可用(Firefox bug 1268804)。
- 现在允许在 localhost 上加载混合内容(Firefox bug 903966)。
- 远程 JAR 文件的加载已再次被禁用(Firefox bug 1329336)。
插件
- Flash 内容现在是“点击以激活”(Firefox bug 1317856)。这项改动已立即对所有 Nightly 用户生效,并对 50% 的 beta 用户生效。对于 Firefox 55 发行版,计划在发布后 2 周为 5% 的用户激活,发布后 4 周为 25% 的用户激活,发布后 6 周为 100% 的用户激活(Firefox bug 1365714)。
- Flash 和其他插件不能再从除
http://和https://之外的任何 URL 协议方案加载(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)。 -
由于没有其他浏览器支持,
<style>元素的scoped属性在 Firefox 55+ 的内容文档中已被隐藏在一个首选项(layout.css.scoped-style.enabled)之后。 -
Firefox 已移除对
<meta>元素的http-equiv属性的一个鲜为人知的值MSThemeCompatible的支持。没有其他现代浏览器支持它,并且它导致了兼容性问题(Firefox bug 966240)。
CSS
- 专有的
:-moz-bound-element伪类已被移除(Firefox bug 1350147)。 - 专有的
-moz-anchor-decoration值(用于text-decoration-line)已被移除(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 offer 选项
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)。