Firefox 51 开发者发行说明
要测试 Firefox 的最新开发者功能,请安装 Firefox Developer Edition。Firefox 51 于 2017 年 1 月 24 日发布。本文列出了对网页开发者、Firefox 和 Gecko 开发者以及附加组件开发者都有用的主要更改。
面向网络开发者的变更
HTML
<hr>元素现在可以用作<menu>元素中的分隔符(Firefox bug 870388)。<input>和<textarea>元素的selectionStart和selectionEnd属性现在在没有选定内容时,正确返回文本输入光标的当前位置,而不是返回 0(Firefox bug 1287655)。
CSS
- 为 <input type="radio"> 实现了
:indeterminate(Firefox bug 885359)。 - 为
<input type="text">实现了:placeholder-shown(Firefox bug 1069015)。 ::placeholder伪元素现在取消了前缀(Firefox bug 1069012)。- 修复了
:validCSS 伪类,该伪类与有效的<form>元素不匹配(Firefox bug 1285425)。 unicode-bidi的plaintext值现在也适用于垂直书写模式(Firefox bug 1302734)。clip-path的fill-box和stroke-box值现在得到正确支持;以前,它们是border-box的别名(Firefox bug 1289011)。- 在具有最大高度的单行自动高度弹性容器中,限制弹性线的总高(限制拉伸的弹性项)(规范更改)(Firefox bug 1000957)。
JavaScript
- ES2015
Symbol.toStringTag属性已实现(Firefox bug 1114580)。 - ES2015
TypedArray.prototype.toString()和TypedArray.prototype.toLocaleString()方法已实现(Firefox bug 1121938)。 DateTimeFormat.prototype.formatToParts()方法现已可用(Firefox bug 1289340)。const和let现在完全符合 ES2015(Firefox bug 950547)。- 在
for...of循环中使用const现在每次迭代都有一个新的绑定,并且不再抛出SyntaxError(Firefox bug 1101653)。 - 已弃用的
for each...in循环现在会在控制台中显示警告(Firefox bug 1293205)。请将您的代码迁移到使用标准化的for...of循环。 - 生成器函数不能再有 label,并且现在不允许将
let用作 label 名称(Firefox bug 1288459)。 - 已弃用的旧版生成器函数在方法定义中使用时现在会抛出错误(Firefox bug 1199296)。
- 迭代器协议的
next()方法现在如果返回的值不是对象,则会抛出TypeError(Firefox bug 1016936)。 - 子索引伪类选择器应在没有父级的情况下匹配(Firefox bug 1300374)。
开发者工具
WebGL
-
WebGL 2 现在默认启用。请参阅 webglsamples.org/WebGL2Samples 获取一些演示。
-
WEBGL_compressed_texture_es3扩展(在 Firefox 46 中实现)已重命名为WEBGL_compressed_texture_etc(Firefox bug 1316778),并且不再默认包含在 WebGL 2 上下文中(Firefox bug 1306174)。 -
EXT_disjoint_timer_query扩展已更新,使用WebGLQuery对象而不是WebGLTimerQuery对象(Firefox bug 1308057)。 -
OES_vertex_array_object扩展现在使用 WebGL 2WebGLVertexArrayObject对象而不是其自己的WebGLVertexArrayObjectOES对象(Firefox bug 1318523)。 -
您现在可以在
WebGLRenderingContext.texImage2D()、WebGLRenderingContext.texSubImage2D()、WebGL2RenderingContext.texImage3D()或WebGL2RenderingContext.texSubImage3D()等方法中使用ImageBitmap对象作为纹理图像的来源(Firefox bug 1324924)。
IndexedDB v2
- IndexedDB 版本 2 实现现已完成
- 已添加对新
IDBObjectStore.getKey()方法的支持(Firefox bug 1271506)。 - 已添加对
IDBCursor.continuePrimaryKey()方法的支持(Firefox bug 1271505)。 - 现在支持二进制密钥(Firefox bug 1271500)。
- 另请参阅 “IndexedDB 2.0 新特性?” – Mozilla hacks
- 已添加对新
Canvas
- 非标准的
CanvasRenderingContext2D.mozFillRule()方法已移除;填充规则可以使用标准CanvasRenderingContext2D.fill()方法的参数定义(Firefox bug 826619)。 CanvasRenderingContext2D.imageSmoothingEnabled已取消前缀(Firefox bug 768072)
SVG
- 添加了
tabindex属性(Firefox bug 778654)。 - 添加了
href属性,这使得xlink:href过时(Firefox bug 1245751)。 - 您现在可以通过
HTMLElement.dataset属性和data-*SVG 属性集在 SVG 元素上使用自定义数据属性(Firefox bug 921834)。 - SVG 图像中使用的 CSS 动画(在
<img>元素中呈现)现在再次起作用;这是一个旧的回归(Firefox bug 1190881)。
Web Workers
- 非标准的、过时的
onclose事件处理程序和Worker使用的close事件已从 Firefox 中移除。
网络
- MIME 类型为
image/*、video/*、audio/*或text/csv的脚本现在被阻止,不加载或执行。当它们使用<script>声明,或通过WorkerGlobalScope.importScripts()、Worker()、SharedWorker()加载时会发生这种情况(Firefox bug 1229267 和 Firefox bug 1288361)。 - 已移除对来自公共受信任证书颁发机构的 SHA-1 证书的支持(Firefox bug 1302140)。另请参阅 逐步淘汰公共网络上的 SHA-1 以获取更多信息。
- 新的 WoSign 和 StartCom 证书将不再被接受(Firefox bug 1309707),请参阅 不信任新的 WoSign 和 StartCom 证书 以获取更多信息。
- PAC
FindProxyForURL(url, host)函数现在从 https:// URLs 中剥离路径和查询,以避免信息泄漏(请参阅 Firefox bug 1255474 和 CVE-2017-5384)。
XHR
- 当解析错误尝试解释接收到的数据时,
XMLHttpRequest.responseXML属性不再返回带有位于顶部的 <parsererror> 节点的局部Document。相反,它正确返回null(Firefox bug 289714)。 - 为匹配最新规范,使用
setRequestHeader()未设置Accept标头的XMLHttpRequest现在会发送带有该标头的请求,其值设置为*/*(Firefox bug 918752)。 - 修复了
XMLHttpRequest.open(),以便在省略时,username和password参数现在默认设置为null,符合规范(Firefox bug 933759)。
WebRTC
RTCPeerConnection.removeStream()方法已移除。它早在 Firefox 22 中就被弃用,并且长期以来一直抛出NotSupportedErrorDOMException。您需要为流上的每个轨道改用RTCPeerConnection.removeTrack()。- WebRTC 现在默认支持 VP9 编解码器。Firefox 46 中添加时,VP9 默认禁用,但启用时是首选编解码器;但是,由于其当前的 CPU 使用率,它已移至第二选择(在 VP8 之后)。
- 方法
HTMLMediaElement.captureStream()返回包含指定<video>或<audio>内容的MediaStream。值得注意的是,它仍然以mozCaptureStream()为前缀,并且尚未完全符合规范。
音频/视频
- 在 FLAC 和 Ogg 容器中都添加了 FLAC 支持(FLAC 编解码器)(Firefox bug 1195723)。支持的 FLAC MIME 类型有:
audio/flac和audio/x-flac。对于 Ogg 中的 FLAC,支持的 MIME 类型有:audio/ogg; codecs=flac和video/ogg; codecs=flac。 - 在 MP4 中添加了对 FLAC 的支持(无论是否带有 MSE)(Firefox bug 1303888)。
- Firefox 50 中更改了在后台选项卡中创建的计时器(由
Window.setInterval()、WorkerGlobalScope.setInterval()、setTimeout()和setTimeout()创建)的节流,如果 Web Audio APIAudioContext正在播放声音,则不再发生节流。但是,这并未解决所有时间敏感音频播放(例如使用计时器生成单个音符的音乐播放器)可能无法正常工作的情况。因此,Firefox 51 不再对具有AudioContext的后台选项卡进行节流,即使它当前没有播放声音。
DOM
DOMImplementation.hasFeature()现在在所有情况下都返回true(Firefox bug 984778)。HTMLInputElement和HTMLTextAreaElement属性selectionStart和selectionEnd现在在没有选择时,正确返回文本输入光标的当前位置,而不是返回 0(Firefox bug 1287655)。HTMLImageElement接口和相应的<img>元素现在支持onerror事件处理程序,每当尝试加载或解释图像时发生错误,都会向元素发送error事件。- 您现在可以通过设置其
effect属性的值来更改 WebAnimation的效果。以前,此属性是只读的(Firefox bug 1049975)。 - Permissions API 方法
Permissions.revoke()已置于一个首选项 (dom.permissions.revoke.enable) 之后,并默认禁用,因为其设计甚至其存在本身都在 Web Application Security Working Group 中进行讨论。 - 存储 API 的
Navigator.storage属性和StorageManager.estimate()方法以及所需的辅助代码已实现。存储单元持久化功能尚未实现。请参阅 Firefox bug 1267941。 - 出于隐私原因,
BatteryManager.chargingTime和BatteryManager.dischargingTime现在将返回值四舍五入到最接近的 15 分钟(Firefox bug 1292655)。
事件
- Firefox 现在支持
onanimationstart、onanimationiteration和onanimationend事件处理程序,此外还支持使用addEventListener()的相应事件(Firefox bug 911987)。 - Firefox 现在支持
ontransitionend事件处理程序(Firefox bug 911987)。
安全
- 当登录页面(即包含
<input type="password">字段的页面)以不安全的方式提交时,Firefox 会在地址栏中显示一个带斜杠的锁定图标,以警告用户(Firefox bug 1319119)。有关更多详细信息,请参阅不安全密码。
移除
- 主要用于 Firefox OS 的非标准 Simple Push API(现已被 W3C Push API 取代)已从 Gecko 中完全移除(Firefox bug 1296579)。
- 主要用于 Firefox OS 的非标准 Alarms API 已从 Gecko 中完全移除(Firefox bug 1300884)。
- 已移除对 Page Visibility API 中前缀的支持(Firefox bug 812701)。
面向附加组件和 Mozilla 开发者的变更
WebExtensions
-
新 API
-
现在支持剪贴板访问(Firefox bug 1197451)
-
已修复传递给
tabs.executeScript()回调的参数(Firefox bug 1290157) -
当卸载 WebExtension 时,localStorage 现在会被清除(Firefox bug 1213990)
-
Web Extensions 中更改的
Content-Type标头现在会被考虑在内(Firefox bug 1304331)
其他
-
install.rdf的multiprocessCompatible属性现在必须明确设置为false,以防止在安装附加组件时在 Firefox 中启用多进程。 -
Mozilla 特有的社交 API 已发生重大变化(主要是移除了不再使用的 API),如下所示
MozSocial接口及其支持的Navigator.mozSocial属性已移除。- 社交书签 API 已移除。
- 社交聊天功能已移除。
- 社交状态 API 已移除。
- 除了分享面板之外,所有社交小部件都已移除。这包括社交侧边栏、浮动面板等。
- 所有支持已移除 API 的用户界面功能和特性也已移除。
- 支持已移除功能的社交服务提供商清单属性不再受支持。
-
如果附加组件使用
mimeTypes.rdf提供文件扩展名到 MIME 类型的映射,它现在必须在"ext-to-type-mapping"类别中注册一个条目(Firefox bug 306471)。 -
浏览器 API 现在在
mozbrowserlocationchange事件的对象上包含一个detail对象,该对象包含canGoForward/canGoBack属性,允许同步检索 mozBrowser 的后退/前进状态(Firefox bug 1279635)。