Firefox 50 开发者版本发行说明
要测试 Firefox 最新的开发者功能,请安装 Firefox Developer Edition。Firefox 50 于 2016 年 11 月 15 日发布。本文列出了对网页开发者、Firefox 和 Gecko 开发者以及附加组件开发者都有用的关键更改。
面向网络开发者的变更
HTML
<bdo>的默认样式现在将unicode-bidi设置为isolate-override值(Firefox bug 1249497)。- 设置
<track>元素的src属性现在可以正常工作(Firefox bug 1281418)。 <area>、<a>、<img>、<iframe>和<link>元素上的referrerpolicy属性现在默认可用(Firefox bug 1223838,Firefox bug 1264165)。
CSS
- 带有 border-radius 以及虚线和点线样式的圆角现在以指定样式而不是实线样式渲染(Firefox bug 382721)。
- 非标准的
:-moz-full-screen-ancestor伪类选择器已被删除(Firefox bug 1199529)。 box-sizing: padding-box已被删除,因为它不再是规范的一部分,并且 Firefox 是唯一实现它的主流浏览器(Firefox bug 1166728)。unicode-bidi属性的isolate、isolate-override和plaintext三个值已取消前缀(Firefox bug 1141895)。- 在怪异模式下,列表项的项目符号现在继承列表的大小,就像在标准模式下一样(Firefox bug 648331)。
:in-range和:out-of-range伪类的行为已更改,不再匹配禁用或只读的输入(Firefox bug 1264157)。:any-link伪类现在已取消前缀(Firefox bug 843579)。- 已实现
border-image-repeat的space值(Firefox bug 720531)。
JavaScript
- 已实现 ES2015
Symbol.hasInstance属性(Firefox bug 1054906)。 - 已实现 ES2017
Object.getOwnPropertyDescriptors()方法(Firefox bug 1245024)。 RegExp中带有 unicode 和 ignoreCase 标志的 \W 行为已更改,以匹配最新的草案规范。现在它不匹配 K、S、k、s、KELVIN SIGN (U+212A) 和 LATIN SMALL LETTER LONG S (U+017F)(Firefox bug 1281739)。
开发者工具
HTTP
- 实验性(和已弃用)的 SPDY 3.1 现在默认禁用 Firefox bug 1287132。
- 已添加对
X-Content-Type-Options的支持(Firefox bug 471020)。 - 已实现 cookie 前缀
__Host-和__Secure-。请参阅Set-Cookie和 Firefox bug 1283368。 - 已实现
Referrer-Policy头部 Firefox bug 1264164。
安全
<a>元素的ping属性现在遵循connect-srcCSP 1.1 策略指令(Firefox bug 1100181)。- 已添加对
sandboxCSP 指令的支持(Firefox bug 671389)。 - 现在可以为 worker 设置 内容安全策略(Firefox bug 959388)。
- 如果信标数据因 内容安全策略 限制而无法发送,
Navigator.sendBeacon()方法不再抛出异常;相反,它按预期返回false(Firefox bug 1234813)。 - RC4 加密支持在 Firefox 36 中已弃用,在 Firefox 44 中默认禁用。一年宽限期已结束,因此 Firefox 50 删除了对 RC4 的所有支持(Google Chrome 已于 2016 年 8 月删除了对 RC4 的支持)。从现在起,任何时候 Firefox 遇到 RC4 加密,它都会报告
SSL_ERROR_NO_CYPHER_OVERLAP错误。
网络
- 当异步
XMLHttpRequest发生错误时,XMLHttpRequest.getAllResponseHeaders()方法现在返回一个空字符串(Firefox bug 1286744)。 - 异步
XMLHttpRequest由于 CORS 或其他网络限制而失败时,不再返回NetworkError,而是引发一个可以像其他错误一样捕获的error(Firefox bug 709991)。 XMLHttpRequest.getResponseHeader()和XMLHttpRequest.getAllResponseHeaders()现在默认也返回空头部。这可以通过首选项network.http.keep_empty_response_headers_as_empty_string进行控制(Firefox bug 918721)。only-if-cached选项已添加到Request.cache(Firefox bug 1272436)。
DOM
- 现在支持
EventTarget.addEventListener()的once选项(Firefox bug 1287706)。 NodeList接口现在是可迭代的,并且forEach()、values()、NodeList.entries()和NodeList.keys()方法现在可用(Firefox bug 1290636)。DOMTokenList接口现在是可迭代的,并且forEach()、values()、DOMTokenList.entries()和DOMTokenList.keys()方法现在可用(Firefox bug 1290636)。Document.createElement()和Document.createElementNS()方法现在有一个可选的options参数,用于创建 自定义元素(Firefox bug 1276579)。
SVG
allowReorder属性已删除,它设置的行为现在是 SVG<switch>元素的默认行为(Firefox bug 1279690)。- SVG
<image>元素上preserveAspectRatio属性的defer关键字已删除,以遵循最新的 SVG2 规范(Firefox bug 1280425)。
拖放 API
- 已实现
DataTransfer.items属性,允许使用 HTML 拖放 API 访问多个正在拖放的项目。为此,现在也支持DataTransferItem和DataTransferItemList接口(Firefox bug 906420)。此功能默认启用。 - 旧的、已过时的 Firefox 特定拖放 API 事件
dragdrop和draggesture不再受支持。请务必更新任何仍在使用这些事件的代码,以使用 HTML 拖放 API(Firefox bug 1162050)。
Pointer Lock API
- 指针锁定 API 现在已取消前缀(Firefox bug 991899)。
- 在 Firefox 50 之前,
requestPointerLock()会通过门式悬挂器请求权限,并且直到用户授予权限后才启用指针锁定。从 Firefox 50 开始,指针锁定类似于 全屏 API:它会立即授予,但会显示一条通知,向用户解释如何退出(Firefox bug 1273351)。
IndexedDB
- 当相应数据库意外关闭时,现在会向
IDBDatabase对象发送close事件(Firefox bug 1151017)。
Service Workers
- 已实现
WindowClient.navigate()方法。此方法允许您在由服务工作线程控制的客户端窗口中打开指定的 URL(Firefox bug 1218148)。
WebGL
- 已实现
EXT_shader_texture_lodWebGL 扩展(Firefox bug 1111689)。 - WebGL 2 的 texImage 方法已更新,以实现 PBO(
PIXEL_UNPACK_BUFFER)(Firefox bug 1280499)。
WebRTC
- 向
MediaStream添加轨道现在会按照规范生成addtrack事件。该事件类型为MediaStreamTrackEvent,并在添加轨道的流上触发。您可以使用MediaStream.addEventListener('addtrack', ...)或onaddtrack属性来处理"addtrack"事件。 MediaStreamTrack接口现在支持ended事件及其事件处理程序。- Firefox 现在支持
MediaStreamTrack.readyState属性,该属性指示轨道是活动状态还是已永久结束。 - 已实现
MediaStreamTrack方法getConstraints()和getSettings();这些方法分别允许您获取最新应用的一组自定义属性约束和所有轨道可约束属性的实际值。随附的数据类型也已记录。 RTCDataChannel.stream属性已删除。在 Firefox 24 中,此属性已替换为RTCDataChannel.id,但为向后兼容性而支持。如果您尚未更新代码,请务必更新您的代码以使用id属性。
Web Audio API
PannerNode接口现在支持用于音频源的位置(PannerNode.positionX、PannerNode.positionY和PannerNode.positionZ)和方向(PannerNode.orientationX、PannerNode.orientationY和PannerNode.orientationZ)的 3D 笛卡尔空间属性。- 已实现
IIRFilterNode接口,该接口实现了一般的 无限脉冲响应(IIR)滤波器。 - 如果 Web Audio API
AudioContext正在主动播放声音,则由Window.setInterval()、WorkerGlobalScope.setInterval()、setTimeout()和setTimeout()创建的计时器在后台选项卡中不再受到限制。这有助于防止背景中对时间敏感的音频播放(例如使用计时器生成单个音符的音乐播放器)出现问题(Firefox bug 1181073)。
音频/视频
AlignSetting枚举(表示VTTCue.align的可能值)之前错误地包含了值"middle"而不是"center"。这已得到纠正(Firefox bug 1276130)。- 非标准和实验性方法
HTMLMediaElement.seekToNextFrame()现在以异步方式而不是同步方式在媒体中查找下一帧,并返回一个Promise,该 Promise 在查找完成后解析。 HTMLTrackElement的实现已更正,允许<track>元素即使不在文档中也能加载资源(Firefox bug 871747)。
电池 API
- 自 Firefox 43 以来已弃用的
Navigator.battery属性现在已过时并已删除。请改用navigator.getBattery()方法获取电池Promise,该 Promise 在BatteryManager可用时解析;BatteryManager将传递给 Promise 的 fulfilled 处理程序(Firefox bug 12593355)。
文件和目录
-
已实现 文件和目录条目 API 的子集,以提高与以前仅与 Google Chrome 兼容的站点的兼容性(Firefox bug 1265767)。
-
已实现异步 API 接口,但仅支持文件读取;例如,
FileSystemFileEntry.createWriter()方法是一个空操作。 -
已实现以下接口
-
已实现
HTMLInputElement.webkitdirectory以及<input>元素的webkitdirectory属性;这允许您将文件输入配置为接受目录而不是文件(Firefox bug 1258489)。 -
已实现
HTMLInputElement.webkitEntries;这返回一个基于FileSystemEntry的对象数组,表示选定的项目。 -
已实现
File.webkitRelativePath;这包含文件相对于包含FileSystemDirectoryEntry根目录的路径,该目录是HTMLInputElement.webkitEntries返回列表中的项目之一。 -
这些 API 现在默认启用;有些以前可用,但仅限于某个首选项(Firefox bug 1288683)。
-
-
作为 文件和目录条目 API 的一部分,我们实现了
DataTransferItem.webkitGetAsEntry();这允许您获取表示拖放文件的FileSystemEntry(Firefox bug 1289255)。此功能默认启用。 -
HTMLInputElement.directory属性,作为 目录上传 API 提案的一部分,已重命名为allowdirs(Firefox bug 1288681)。此属性隐藏在首选项后面。