Firefox 50 开发者版
要测试 Firefox 的最新开发者功能,请安装 Firefox 开发者版。Firefox 50 于 2016 年 11 月 15 日发布。本文列出了对 Web 开发人员、Firefox 和 Gecko 开发人员以及附加组件开发人员有用的关键更改。
Web 开发者更改
HTML
<bdo>
的默认样式现在使用isolate-override
值设置unicode-bidi
(Firefox bug 1249497)。- 设置
<track>
元素的src
属性现在可以正常工作了 (Firefox bug 1281418)。 <area>
、<a>
、<img>
、<iframe>
和<link>
元素上的referrerpolicy
属性现在默认可用 (Firefox bug 1223838,Firefox bug 1264165)。
CSS
- 带有虚线和点状样式的圆角边框现在使用指定的样式而不是实线样式进行渲染 (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-src
CSP 1.1 策略指令 (Firefox bug 1100181)。- 已添加对
sandbox
CSP 指令的支持 (Firefox bug 671389)。 - 现在可以为工作线程设置 内容安全策略 (Firefox bug 959388)。
Navigator.sendBeacon()
方法不再因 内容安全策略 限制而无法发送信标数据时抛出异常;而是按预期返回false
(Firefox bug 1234813)。- Firefox 36 中已弃用 RC4 加密,并在 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 或其他网络约束而失败时,现在会引发可像其他任何错误一样捕获的error
,而不是返回NetworkError
(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)。
指针锁定 API
- 指针锁定 API 现在已取消前缀 (Firefox bug 991899)。
- 在 Firefox 50 之前,
requestPointerLock()
使用弹窗请求权限,并且只有在用户授予权限后才会启用指针锁定。从 Firefox 50 开始,指针锁定类似于全屏 API:它会立即授予权限,但会显示通知告知用户如何退出 (Firefox bug 1273351)。
IndexedDB
- 当对应的数据库意外关闭时,现在会向
IDBDatabase
对象发送一个close
事件 (Firefox bug 1151017)。
服务工作线程
- 已实现
WindowClient.navigate()
方法。此方法允许您在受服务工作线程控制的客户端窗口中打开指定的 URL (Firefox bug 1218148)。
WebGL
- 已实现
EXT_shader_texture_lod
WebGL 扩展 (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 音频 API
PannerNode
接口现在支持音频源位置 (PannerNode.positionX
、PannerNode.positionY
和PannerNode.positionZ
) 和方向性 (PannerNode.orientationX
、PannerNode.orientationY
和PannerNode.orientationZ
) 的 3D 笛卡尔空间属性。- 已实现
IIRFilterNode
接口,该接口实现了一个通用的无限脉冲响应 (IIR) 滤波器。 - 如果Web 音频 API
AudioContext
正在积极播放声音,则由setInterval()
和setTimeout()
创建的后台选项卡中的计时器将不再发生节流。这应该有助于防止后台音频播放中出现定时敏感问题(例如,使用计时器生成单个音符的音乐播放器) (Firefox bug 1181073)。
音频/视频
AlignSetting
枚举(表示VTTCue.align
的可能值)之前错误地包含了值"middle"
而不是"center"
。此问题已得到纠正 (Firefox bug 1276130)。- 非标准且实验性的方法
HTMLMediaElement.seekToNextFrame()
现在异步而不是同步地跳转到媒体中的下一帧,并返回一个Promise
,该Promise
在跳转完成后解析。 - 已更正
HTMLTrackElement
的实现,以允许<track>
元素加载资源,即使不在文档中也是如此 (Firefox bug 871747)。
电池 API
Navigator.battery
属性自 Firefox 43 以来已被弃用,现在已过时并已删除。请改用navigator.getBattery()
方法获取电池Promise
,该Promise
在BatteryManager
可用于使用时解析;BatteryManager
传递到Promise
的 fulfillment 处理程序中 (Firefox bug 12593355)。
文件和目录
- 已实现文件和目录条目 API 的一个子集,以提高与以前仅与 Google Chrome 兼容的站点的兼容性 (Firefox bug 1265767)。
- 已实现异步 API 接口,但需要注意的是,仅支持读取文件;例如,
FileSystemFileEntry.createWriter()
方法是一个空操作。 - 已实现以下接口:
- 已实现
HTMLInputElement.webkitdirectory
以及webkitdirectory
属性的<input>
元素;这允许您将文件输入配置为接受目录而不是文件 (Firefox bug 1258489)。 - 已实现
HTMLInputElement.webkitEntries
;它返回一个基于FileSystemEntry
的对象数组,表示所选项目。 - 已实现
File.webkitRelativePath
;它包含相对于包含FileSystemDirectoryEntry
的根目录的文件路径,该FileSystemDirectoryEntry
位于HTMLInputElement.webkitGetEntries()
返回的列表中的项目。 - 有关我们在该 API 中支持和不支持的内容的详细信息,请参阅Firefox 中的文件和目录条目 API 支持。
- 这些 API 现在默认启用;一些 API 之前可用,但仅在首选项后可用 (Firefox bug 1288683)。
- 已实现异步 API 接口,但需要注意的是,仅支持读取文件;例如,
- 我们已实现
DataTransferItem.webkitGetAsEntry()
作为文件和目录条目 API 的一部分;这允许您获取表示已删除文件的FileSystemEntry
(Firefox bug 1289255)。此功能默认启用。 - 目录上传 API 提议中的一部分
HTMLInputElement.directory
属性已重命名为allowdirs
(Firefox bug 1288681)。此属性隐藏在首选项后。
旧版本
- 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 开发者指南
- Firefox 19 开发者指南