Firefox 52 开发者发布说明
Firefox 52 于 2017 年 3 月 7 日发布。本文列出了对 Web 开发者、Firefox 和 Gecko 开发者以及附加组件开发者都有用的主要更改。
面向网络开发者的变更
开发者工具
HTML
- 已实现
rel="noopener"
链接类型(参见 Firefox bug 1222516)。
CSS
新功能
-
添加了
:focus-within
伪类(Firefox bug 1176997)。 -
在
<button>
元素中添加了对display:flex/grid
和列集布局的支持(Firefox bug 984869)。 -
实现了数字颜色与
currentColor
之间的插值(Firefox bug 1299741)。 -
实现了
和justify-content
: space-evenly
的 Flexbox 布局(Firefox bug 1235922)。align-content
: space-evenly -
在 CSS
mask
/clip-path
中添加了对亚像素抗锯齿的支持(Firefox bug 1305259)。 -
实现了 CSS Text 3 段落分隔转换规则(Firefox bug 1081858)。
-
基本形状剪裁(通过
clip-path
属性应用)现在可以应用于 SVG 内容(Firefox bug 1246741)。 -
实现了
align-self
和justify-self
的 Flexbox 布局(Firefox bug 1221524)。 -
touch-action
属性现在在所有平台上默认启用。(完整的故事请参阅 发货意向邮件 #1 和 发货意向邮件 #2。) -
Flexbox
align-content
处理和单行尺寸应取决于flex-wrap
,而不是行数(Firefox bug 1090031)。 -
CSS 动画现在可用于动画非插值属性(参见 Firefox bug 1064937)。
-
将
baseline|last-baseline
更改为[ first | last ]? baseline
(Firefox bug 1313254)。 -
left
/right
的使用值对于块轴是start
(Firefox bug 1221565)。 -
使用不确定包含块长度拉伸柔性轨道现在遵循最小/最大尺寸(Firefox bug 1309407)。
-
mask-position
和mask-repeat
的初始值已分别更改为0% 0%
和repeat
(Firefox bug 1308963)。 -
CSS
<color>
值发生了一些变化(参见 Firefox bug 1295456)rgba()
和hsla()
现在已被重新定义为rgb()
和hsl()
的别名;两者都接受相同的参数语法。rgb()
和hsl()
现在接受可选的 alpha 值,例如rgb(255, 0, 0, 0.5)
。- 颜色函数现在接受空格分隔的参数而不是逗号,例如
rgb(255 0 0 / 0.5)
。 - Alpha 值现在可以指定为百分比以及数字,例如
rgb(255 0 0 / 50%)
。 hsl()
颜色中的色相分量现在可以指定为角度以及数字,例如hsl(120deg, 60%, 70%)
。
-
Firefox 对子索引伪类(如
:nth-child
、:first-child
等)的实现已更新以匹配 CSS 选择器级别 4 规范:这些伪类现在匹配适当的兄弟元素,而不是其父元素的子元素。这允许在没有父元素或父元素不是Element
时使用这些伪类(Firefox bug 1300374)。
CSS 网格
- 已实现 CSS 网格。
更改和移除
- 未加前缀的多列属性(并暂时重新添加了
-moz
前缀版本作为别名)(Firefox bug 1300895)。 - 停止将 flex 容器的绝对定位子元素封装在匿名 flex 项目中(Firefox bug 1269045)。
- 实现了网格容器基线(Firefox bug 1151204)。
- 从样式系统中移除了
<flex>
最小尺寸(Firefox bug 1305244)。 - 移除了偏好设置
layout.css.masking.enabled
(Firefox bug 1308239)。 - 专有的
-moz-images-in-menus
和-moz-images-in-buttons
媒体类型已被移除(参见 Firefox bug 1302157)。 - 从颜色属性中移除了
-moz-use-text-color
值;请改用currentColor
(Firefox bug 1306214)。 - [css-grid] 网格项上设置的 'max-width' 导致文本溢出(Firefox bug 1330380)。
JavaScript
新功能
- 已添加对异步函数的支持。这包括
async function
声明、async function
表达式以及await
关键字(Firefox bug 1185106)。 - 在函数中实现了 ES2017 尾随逗号(Firefox bug 1303788)。
- 实现了 剩余参数 解构(Firefox bug 1243717)。
- 幂运算符 (
**
) 现在默认启用(Firefox bug 1291212)。 - 您现在可以在日期相关 API(如
DateTimeFormat
或Date.toLocaleString()
)的timeZone
选项中使用 IANA 时区名称(Firefox bug 837961)。
更改和移除
- 当在 数组解构 中使用解构剩余参数并带有尾随逗号时,现在会抛出
SyntaxError
(Firefox bug 1041341)。 - 对象解构 中现在允许重复的
__proto__
属性(Firefox bug 1204024)。 Array.prototype.toLocaleString()
已重新实现以支持 Intl API 参数locales
和options
(Firefox bug 1130636)。TypedArray
构造函数现在接受 可迭代对象 来创建新的类型化数组(Firefox bug 1232266)。TypedArray.from()
、TypedArray.of()
、TypedArray.prototype.filter()
、TypedArray.prototype.map()
、TypedArray.prototype.slice()
、TypedArray.prototype.subarray()
现在要求它们的this
值是有效的类型化数组构造函数(Firefox bug 1122396)。- 非标准
ArrayBuffer.slice()
方法(不是ArrayBuffer.prototype.slice()
)已弃用,现在使用时会发出警告(Firefox bug 1316913)。 - Unicode 码点转义现在也可以用作标识符(例如,
let \u{61} = 123
,参见 Firefox bug 1314037)。 - 为符合 ES2015 规范,
\u2e2f
和ⸯ
现在用作标识符时会抛出错误,详情请参阅 Firefox bug 917436 和 Firefox bug 1197230。
WebAssembly
- Gecko 中已添加对 WebAssembly 的支持。
DOM
- 已完全发布 Selection API,包括新的
selectstart
和selectionchange
事件(Firefox bug 1309612)。 - 现在支持属性
Event.composed
;此布尔值指示事件是否可以通过 Shadow Root 冒泡到标准 DOM 中(Firefox bug 1292063)。 - 只有 HTML 元素以及
<svg>
和<math>
元素才能通过调用Element.requestFullscreen()
进入全屏模式(Firefox bug 1305928)。 - 触摸事件已在 Windows 桌面平台上重新启用 — 参见 Firefox bug 1244402。(它们在 Firefox 24 中被禁用,因为它们破坏了许多主要站点;参见 Firefox bug 888304。)
- 已实现
focusin
和focusout
事件(Firefox bug 687787)。 - 已实现
WorkerGlobalScope.isSecureContext
属性(参见 Firefox bug 1269052)。 - Web App Manifest 安装事件已重命名为
appinstalled
,以避免与 Service Worker 安装事件(参见oninstall
)混淆。有关此更新的更多详细信息,请参见 Firefox bug 1309099。 - 拖放 API 的
DataTransfer.types
属性现在返回一个字符串冻结数组,而不是DOMStringList
(参见 Firefox bug 1298243)。 loadstart
和loadend
事件现在在<img>
元素上触发(参见 Firefox bug 1264769)。- 已实现 通知 API 的
Notification.requireInteraction
(参见 Firefox bug 862395)。 Window.open()
方法现在有一个noopener
窗口特性可用(参见 Firefox bug 1267339),它反映了rel="noopener"
链接类型的功能。- 已实现 Web Components API 的
CustomElementRegistry.get()
方法(参见 Firefox bug 1275838)。 - 指针事件
width
和height
属性现在默认为 1(参见 Firefox bug 1304315)。 - 文件和目录条目 API 已更新以包含 最新规范 中的更改(有关确切详细信息,请参见 Firefox bug 1284987)。
cancelBubble
属性以前在UIEvent
上定义,现在改为在Event
接口上定义。有关更多详细信息,请参见 Firefox bug 1298970。
更改和移除
- 处理电话呼叫的 Firefox OS API(Contacts、MobileConnection、Icc 等)已被移除(Firefox bug 1311206)。
- Firefox OS
Identity
接口已被移除(Firefox bug 1309030)。 - Firefox OS 语音邮件 API(
MozVoicemail
、MozVoicemailEvent
、MozVoicemailStatus
、Navigator.mozVoicemail
)已被移除(Firefox bug 1309723)。 - Firefox OS 蜂窝广播 API(
MozCellBroadcast
、MozCellBroadcastEvent
、MozCellBroadcastMessage
、Navigator.mozCellBroadcast
)已被移除(Firefox bug 1306772)。 - Firefox OS 电视广播相关 API 已被移除(Firefox bug 1306778)。
- Firefox OS FM 广播 API(
FMRadio
、Navigator.mozFMRadio
)已被移除(Firefox bug 1306779)。
Service Workers 和 Fetch
Headers.getAll()
方法已被移除,Headers.get()
现在检索指定标头的所有值,而不仅仅是第一个值(参见 Firefox bug 1278275)。这符合最新的 Fetch API 规范更新。
Web Audio API
- 已添加
ConstantSourceNode
接口;它表示一个始终输出所有样本值相同的音频流的音频源。有关此如何用于简化某些复杂音频流的示例,请参见 使用 ConstantSourceNode 控制多个参数。
WebRTC
- 当 ICE 连接暂时中断时,
RTCPeerConnection.iceConnectionState
属性现在设置为"disconnected"
;这表示可能很快自行解决的暂时性故障,之后连接会恢复到"connected"
状态(Firefox bug 852665)。 MediaDevices
devicechange
事件及其对应的处理程序在 Firefox 51 中仅在 Mac 上实现但默认禁用,现在已在 Windows 和 Linux 上实现,并在所有平台上默认启用。- 现在支持
MediaStream.active
属性。此只读布尔属性指示流上是否至少有一个轨道正在播放。 - 在 Firefox 52 之前,
MediaStreamTrack.stop()
方法只能停止本地轨道(即通过getUserMedia()
获取的轨道)。现在可以停止各种轨道,包括与 WebRTC 连接、Web Audio API 流或CanvasCaptureMediaStream
关联的MediaStream
上的轨道。 - 以前,在 Firefox 事件循环的单次传递中重复更改
TextTrack
的mode
会导致多个change
事件传递到父媒体元素的textTracks
属性指定的TextTrackList
。现在这些更改合并到一个事件中(Firefox bug 882674)。
音频/视频/媒体
- 当处理
<audio>
或<video>
元素时发生错误,HTMLMediaElement.error
中指定的MediaError
对象现在包含一个message
属性,它提供了所发生错误的具体描述。此字符串提供了有关此确切错误发生情况的详细信息,揭示了出错的原因(Firefox bug 1299072)。此字段自 Firefox 51 以来的 Firefox 夜间构建中已包含,但现在在所有构建中都可用,包括发布版本。
其他 API
- 已移除
FileSystemFileEntry.createWriter()
方法,该方法在 Firefox 50 中添加(但始终返回错误)(Firefox bug 1315185)。 - 专有的 Firefox OS
Apps installation/management APIs
已从平台中移除(参见 Firefox bug 1261019)。 - 专有的 Firefox OS
Web Telephony API
已从平台中移除(参见 Firefox bug 1309719)。 - 专有的 Firefox OS
Web Bluetooth API
已从平台中移除(参见 Firefox bug 1310020)。 - 电池状态 API 现在仅适用于 chrome/特权代码(参见 Firefox bug 1313580)。
ImageBitmapRenderingContext.transferImageBitmap()
已重命名为ImageBitmapRenderingContext.transferFromImageBitmap()
(参见 Firefox bug 1304767)。mozDash
和mozDashOffset
成员已从CanvasRenderingContext2D
中移除(参见 Firefox bug 931389)。
HTTP
Referrer-Policy
标头现在支持指令same-origin
、strict-origin
和strict-origin-when-cross-origin
(Firefox bug 1276836)。Content-Security-Policy
指令(例如script-src
)现在支持'strict-dynamic'
源表达式(Firefox bug 1299483)。- 根据 Strict Secure Cookies 规范,不安全的站点 (
http:
) 不能再设置带有 "secure" 指令的 cookie(Firefox bug 976073)。 - HTTP/2 标头压缩格式 HPACK 的最大表格大小已从 4 KB 增加到 64 KB(Firefox bug 1296280)。
- 已添加
Large-Allocation
标头(Firefox bug 1304140)。
SVG
- SVG 文档现在使用
XMLDocument
接口而不是 SVGDocument 来表示。这是 SVG 2 规范中的一项更改。
安全
- 当登录页面(即包含
<input type="password">
字段的页面)以不安全的方式提交时,Firefox 会在密码字段下方显示一个上下文警告消息以提醒用户(Firefox bug 1319119)。自动填充也在不安全的登录表单上禁用(Firefox bug 1217152)。有关更多详细信息,请参见 不安全的密码。 - 已移除对 SHA-1 SSL 证书的支持;导航到使用 SHA-1 证书的安全页面现在将导致
Untrusted Connection
错误(Firefox bug 1330043)。
插件
除了 Flash 之外的所有 NPAPI 插件支持都已删除。Flash 的使用也将在未来逐步淘汰。
面向附加组件和 Mozilla 开发者的变更
WebExtensions
新 API
sessions
APItopSites
APIomnibox
APIruntime.onInstalled
和runtime.onStartup
事件- webRequest 中的异步事件监听器
bookmarks.onMoved
、bookmarks.onCreated
、bookmarks.onChanged
事件- 命令清单键中的
_execute_browser_action
和_execute_page_action
- content_scripts 清单键中的
match_about_blank
接口
- 已添加
nsIDroppedLinkHandler.dropLinks
方法和nsIDroppedLinkItem
接口以处理拖放多个项目(Firefox bug 92737)。
XUL
- 已添加
tabbrowser.loadTabs(uris, params)
方法重载(Firefox bug 92737)。 browser.droppedLinkHandler
函数签名已更改(Firefox bug 92737)。