Firefox 51 开发者版本
要测试 Firefox 的最新开发者功能,请安装 Firefox 开发者版本。Firefox 51 于 2017 年 1 月 24 日发布。本文列出了对 Web 开发人员、Firefox 和 Gecko 开发人员以及附加组件开发人员都有用的关键更改。
Web 开发人员的更改
HTML
<hr>
元素现在可以作为<menu>
元素的分隔符使用 (Firefox 错误 870388)。<input>
和<textarea>
元素的selectionStart
和selectionEnd
属性现在在没有选择时会正确返回文本输入光标的当前位置,而不是返回 0 (Firefox 错误 1287655)。
CSS
- 为 <input type="radio"> 实现
:indeterminate
(Firefox 错误 885359)。 - 为
<input type="text">
实现:placeholder-shown
(Firefox 错误 1069015)。 ::placeholder
伪元素现在已取消前缀 (Firefox 错误 1069012)。- 修复了
:valid
CSS 伪类,该伪类以前不匹配有效的<form>
元素 (Firefox 错误 1285425)。 unicode-bidi
的plaintext
值现在也适用于垂直书写模式 (Firefox 错误 1302734)。clip-path
的fill-box
和stroke-box
值现在已得到正确支持;以前,它们是border-box
的别名 (Firefox 错误 1289011)。- 限制 flex 行的高度(限制拉伸的 flex 项目),在具有 max-height 的单行自动高度 flex 容器中(规范更改)(Firefox 错误 1000957)。
JavaScript
- 已实现 ES2015
Symbol.toStringTag
属性 (Firefox 错误 1114580)。 - 已实现 ES2015
TypedArray.prototype.toString()
和TypedArray.prototype.toLocaleString()
方法 (Firefox 错误 1121938)。 DateTimeFormat.prototype.formatToParts()
方法现已可用 (Firefox 错误 1289340)。const
和let
现在完全符合 ES2015 标准 (Firefox 错误 950547)。- 在
for...of
循环中使用const
现在每次迭代都会有新的绑定,并且不再抛出SyntaxError
(Firefox 错误 1101653)。 - 已弃用的 for each...in 循环现在会在控制台中显示 警告 (Firefox 错误 1293205)。请将您的代码迁移到标准化的
for...of
循环。 - 生成器函数 不再允许有 标签,并且现在不允许将“
let
”用作标签名称 (Firefox 错误 1288459)。 - 已弃用的 旧版生成器函数 现在在 方法定义 中使用时将抛出错误 (Firefox 错误 1199296)。
- 迭代器协议 的
next()
方法现在如果返回的值不是对象,则会抛出TypeError
(Firefox 错误 1016936)。 - 子索引伪类选择器应该在没有父元素的情况下匹配 (Firefox 错误 1300374)。
开发者工具
WebGL
- WebGL 2 现在默认启用。请参阅 webglsamples.org/WebGL2Samples 以获取一些演示。
WEBGL_compressed_texture_es3
扩展(在 Firefox 46 中实现)已重命名为WEBGL_compressed_texture_etc
(Firefox 错误 1316778),并且不再默认包含在 WebGL 2 上下文中 (Firefox 错误 1306174)。EXT_disjoint_timer_query
扩展已更新为使用WebGLQuery
对象而不是WebGLTimerQuery
对象 (Firefox 错误 1308057)。OES_vertex_array_object
扩展现在使用 WebGL 2WebGLVertexArrayObject
对象,而不是其自身的WebGLVertexArrayObjectOES
对象 (Firefox 错误 1318523)。- 您现在可以使用
ImageBitmap
对象作为纹理图像的源,例如在WebGLRenderingContext.texImage2D()
、WebGLRenderingContext.texSubImage2D()
、WebGL2RenderingContext.texImage3D()
或WebGL2RenderingContext.texSubImage3D()
方法中 (Firefox 错误 1324924)。
IndexedDB v2
- IndexedDB 版本 2 的实现现已完成
- 已添加对新
IDBObjectStore.getKey()
方法的支持 (Firefox 错误 1271506)。 - 已添加对
IDBCursor.continuePrimaryKey()
方法的支持 (Firefox 错误 1271505)。 - 现在支持二进制键 (Firefox 错误 1271500)。
- 另请参阅 “IndexedDB 2.0 中的新功能?” – Mozilla hacks
- 已添加对新
Canvas
- 非标准的
CanvasRenderingContext2D.mozFillRule()
方法已被移除;可以使用标准CanvasRenderingContext2D.fill()
方法的参数定义填充规则 (Firefox 错误 826619)。 CanvasRenderingContext2D.imageSmoothingEnabled
已取消前缀 (Firefox 错误 768072)
SVG
- 添加了
tabindex
属性 (Firefox 错误 778654)。 - 添加了
href
属性,这使得xlink:href
属性已过时 (Firefox 错误 1245751)。 - 您现在可以通过
HTMLElement.dataset
属性和data-*
SVG 属性集在 SVG 元素上使用自定义数据属性 (Firefox 错误 921834)。 - 在
<img>
元素中显示的 SVG 图像中使用的 CSS 动画现在再次有效;这是一个旧的回归问题 (Firefox 错误 1190881)。
Web Workers
- 非标准且已过时的
DedicatedWorkerGlobalScope.close
事件处理程序和Worker
对close
事件的使用已从 Firefox 中移除。
网络
- 现在阻止并不会加载或执行使用
image/*
、video/*
、audio/*
或text/csv
MIME 类型提供的脚本。当使用<script>
声明或通过Worker.importScripts()
、Worker()
、SharedWorker()
加载时,就会发生这种情况(Firefox bug 1229267和Firefox bug 1288361)。 - 已移除来自公开受信任证书颁发机构的 SHA-1 证书的支持(Firefox bug 1302140)。有关更多信息,另请参阅逐步淘汰公共 Web 上的 SHA-1。
- 将不再接受新的 WoSign 和 StartCom 证书(Firefox bug 1309707),有关更多信息,请参阅不信任新的 WoSign 和 StartCom 证书。
- 现在,PAC
FindProxyForURL(url, host)
函数会从 https:// URL 中剥离路径和查询,以避免信息泄漏(请参阅Firefox bug 1255474、使用恶意 PAC 文件嗅探 HTTPS URL或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 中就被弃用,并且长时间以来一直抛出NotSupportedError
DOMException
。您需要改为对流上的每个轨道使用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 中更改了后台选项卡中由
setInterval()
和setTimeout()
创建的计时器的节流,如果Web 音频 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)。 - 权限 API 方法
Permissions.revoke()
已置于首选项(dom.permissions.revoke.enable
)之后,并且默认情况下处于禁用状态,因为其设计甚至其存在本身都正在Web 应用程序安全工作组中进行讨论。 - 已实现存储 API的
Navigator.storage
属性和StorageManager.estimate()
方法以及所需的辅助代码。存储单元持久性功能尚未实现。请参阅Firefox bug 1267941。 - 出于隐私原因,
BatteryManager.chargingTime
和BatteryManager.dischargingTime
现在都会将返回的值四舍五入到最接近的 15 分钟(Firefox bug 1292655)。
事件
- Firefox 现在支持
onanimationstart
、onanimationiteration
和onanimationstart
事件处理程序,此外还支持使用addEventListener()
的相应事件(Firefox bug 911987)。 - Firefox 现在支持
ontransitionend
事件处理程序(Firefox bug 911987)。
安全
- 当创建登录页面(即包含
<input type="password">
字段的页面)以便不安全地提交时,Firefox 会在地址栏中显示一个带删除线的锁图标以警告用户(Firefox bug 1319119)。有关更多详细信息,请参阅不安全的密码。
移除
- 已从 Gecko 中完全移除主要用于 Firefox OS 且现已被W3C 推送 API取代的非标准简单推送 API(Firefox bug 1296579)。
- 已从 Gecko 中完全移除主要用于 Firefox OS 的非标准警报 API(Firefox bug 1300884)。
- 已移除对页面可见性 API中前缀的支持(Firefox bug 812701)。
附加组件和 Mozilla 开发人员的更改
WebExtensions
- 新的 API
- 您现在可以将 WebExtension 嵌入到旧版加载项类型中(Firefox bug 1252215)。
- 剪贴板访问现已受支持(Firefox bug 1197451)
- 已修复传递给
tabs.executeScript()
的回调的参数(Firefox bug 1290157) - 卸载 WebExtension 时,现在会清除localStorage(Firefox bug 1213990)
- 现在会考虑 Web 扩展程序中更改的
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 错误 306471)。 - 现在浏览器 API在
mozbrowserlocationchange
事件的事件对象上包含一个detail
对象,该对象包含canGoForward
/canGoBack
属性,允许同步检索 mozBrowser 的前进/后退状态(Firefox 错误 1279635)。
旧版本
- Firefox 50 开发者版本
- Firefox 49 开发者版本
- Firefox 48 开发者版本
- Firefox 47 开发者版本
- Firefox 46 开发者版本
- Firefox 45 开发者版本
- Firefox 44 开发者版本
- Firefox 43 开发者版本
- Firefox 42 开发者版本
- Firefox 41 开发者版本
- Firefox 40 开发者版本
- Firefox 39 开发者版本
- Firefox 38 开发者版本
- Firefox 37 开发者版本
- Firefox 36 开发者版本
- Firefox 35 开发者版本
- Firefox 34 开发者版本
- Firefox 33 开发者版本
- Firefox 32 开发者版本
- Firefox 31 开发者版本
- Firefox 30 开发者版本
- Firefox 29 开发者版本
- Firefox 28 开发者版本
- Firefox 27 开发者版本
- Firefox 26 开发者版本
- Firefox 25 开发者版本
- Firefox 24 开发者版本
- Firefox 23 开发者版本
- Firefox 22 开发者版本
- Firefox 21 开发者版本
- Firefox 20 开发者版本