Firefox 52 开发者版本
Firefox 52 于 2017 年 3 月 7 日发布。本文列出了对 Web 开发人员、Firefox 和 Gecko 开发人员以及附加组件开发人员都有用的关键更改。
Web 开发人员更改
开发者工具
HTML
- 已实现
rel="noopener"
链接类型(请参阅 Firefox 错误 1222516)。
CSS
新功能
- 添加了
:focus-within
伪类 (Firefox 错误 1176997)。 - 添加了对
display:flex/grid
和 columnset 布局在<button>
元素内部的支持 (Firefox 错误 984869)。 - 实现了数值颜色和 currentcolor 之间的插值 (Firefox 错误 1299741)。
- 为
和justify-content
: space-evenly
实现了 flexbox 布局 (Firefox 错误 1235922)。align-content
: space-evenly - 添加了对 CSS
mask
/clip-path
中的亚像素抗锯齿的支持 (Firefox 错误 1305259)。 - 实现了 CSS Text 3 段落断行转换规则 (Firefox 错误 1081858)。
- 基本形状剪裁(如通过
clip-path
属性应用)现在可以应用于 SVG 内容 (Firefox 错误 1246741)。 - 为
align-self
|justify-self
: [ first | last ]? baseline 实现了 Flexbox 布局 (Firefox 错误 1221524)。 touch-action
属性现在在所有平台上默认启用。(有关完整信息,请参阅 发布意图邮件 #1 和 发布意图邮件 #2)。- Flexbox
align-content
处理和单行大小应取决于flex-wrap
,而不是行数 (Firefox 错误 1090031)。 - CSS 动画 现在可以用于动画化非插值属性(请参阅 Firefox 错误 1064937)。
- 将
baseline|last-baseline
更改为[ first | last ]? baseline
(Firefox 错误 1313254)。 left
/right
的使用值对于块轴是start
(Firefox 错误 1221565)。- 具有无限包含块长度的拉伸弹性轨道现在会尊重 min/max 大小(Firefox 错误 1309407)。
mask-position
和mask-repeat
的初始值分别更改为0% 0%
和repeat
(Firefox 错误 1308963)。- CSS
<color>
值已发生了一些更改(请参阅 Firefox 错误 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 错误 1300374。
CSS 网格
- CSS 网格 已实现。
更改和删除
- 无前缀多列属性(并暂时添加回
-moz
前缀版本作为别名)(Firefox 错误 1300895)。 - 停止将 flex 容器的 abspos 子元素包装在匿名 flex 项目中(Firefox 错误 1269045)。
- 实现了网格容器基线 (Firefox 错误 1151204)。
- 从样式系统中删除了
<flex>
最小大小 (Firefox 错误 1305244)。 - 删除首选项
layout.css.masking.enabled
(Firefox 错误 1308239)。 - 已删除专有的
-moz-images-in-menus
和-moz-images-in-buttons
媒体类型(请参阅 Firefox 错误 1302157)。 - 从颜色属性中删除了
-moz-use-text-color
值;改为使用currentcolor
(Firefox 错误 1306214)。 - [css-grid] 在网格项目上设置 'max-width' 会导致文本溢出 (Firefox 错误 1330380)。
JavaScript
新功能
- 已添加对异步函数的支持。这添加了
async function
声明、async function
表达式以及await
关键字 (Firefox 错误 1185106)。 - 在函数中实现了 ES2017 尾随逗号 (Firefox 错误 1303788)。
- 实现了 剩余参数解构 (Firefox 错误 1243717)。
- 求幂运算符 (**) 现在已默认启用 (Firefox 错误 1291212)。
- 你现在可以在与日期相关的 API(如
DateTimeFormat
或Date.toLocaleString()
)的timeZone
选项中使用 IANA 时区名称 (Firefox 错误 837961)。
更改和删除
- 数组解构 在使用带尾随逗号的剩余解构时现在会抛出
SyntaxError
(Firefox 错误 1041341)。 - 现在允许在 对象解构 中使用重复的
__proto__
属性 (Firefox 错误 1204024)。 Array.prototype.toLocaleString()
已重新实现以支持 Intl API 参数“locales
”和“options
” (Firefox 错误 1130636)。TypedArray
构造函数现在接受 可迭代对象 以创建新的类型化数组 (Firefox 错误 1232266)。TypedArray.from()
、TypedArray.of()
、TypedArray.prototype.filter()
、TypedArray.prototype.map()
、TypedArray.prototype.slice()
、TypedArray.prototype.subarray()
现在要求其this
值为有效的类型化数组构造函数 (Firefox 错误 1122396)。- 非标准的
ArrayBuffer.slice()
方法(不是ArrayBuffer.prototype.slice()
)已弃用,现在在使用时会显示警告 (Firefox 错误 1316913)。 - Unicode 代码点转义 现在也可以用作标识符(例如“
let \u{61} = 123
”,请参阅 Firefox 错误 1314037)。 - 为了符合 ES2015,
\u2e2f
和ⸯ
在用作标识符时现在会抛出异常,有关详细信息,请参阅 Firefox 错误 917436 和 Firefox 错误 1197230。
WebAssembly
- 已将对 WebAssembly 的支持添加到 Gecko 中。
DOM
- Selection API 已经完全发布,包括新的
selectstart
和selectionchange
事件 (Firefox bug 1309612)。 - 现在支持
Event.composed
属性;此布尔值指示事件是否可以冒泡穿过 Shadow DOM 到标准 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 应用清单的安装事件已重命名为
appinstalled
,以避免与 Service Worker 安装事件 (oninstall
) 混淆。有关此更新的更多详细信息,请参阅 Firefox bug 1309099。 - 拖放 API 的
DataTransfer.types
属性现在返回一个冻结的字符串数组,而不是DOMStringList
(请参阅 Firefox bug 1298243)。 - 现在在
<img>
元素上触发loadstart
和loadend
事件(请参阅 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)。 - Pointer 事件的
width
和height
属性现在默认为 1(请参阅 Firefox bug 1304315)。 - 文件和目录条目 API 已更新,包含 最新规范 中的更改(有关确切的详细信息,请参阅 Firefox bug 1284987)。
cancelBubble
属性,之前定义在UIEvent
上,现在定义在Event
接口上。有关更多详细信息,请参阅 Firefox bug 1298970。
更改和删除
- 已删除处理电话呼叫的 Firefox OS API(联系人、移动连接、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 调频收音机 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 nightly 版本(从 Firefox 51 开始)中,但现在在所有版本(包括发布版本)中都可用。
其他 API
- 已删除在 Firefox 50 中添加(但始终返回错误)的方法
FileSystemFileEntry.createWriter()
(Firefox bug 1315185。 - 已从平台中删除专有的 Firefox OS
应用程序安装/管理 API
(请参阅 Firefox bug 1261019)。 - 已从平台中删除专有的 Firefox OS
Web 电话 API
(请参阅 Firefox bug 1309719)。 - 已从平台中删除专有的 Firefox OS
Web 蓝牙 API
(请参阅 Firefox bug 1310020)。 - 电池状态 API 现在仅对 Chrome/特权代码可用(请参阅 Firefox bug 1313580)。
ImageBitmapRenderingContext.transferImageBitmap()
已重命名为ImageBitmapRenderingContext.transferFromImageBitmap()
(请参阅 Firefox bug 1304767)。- 已从
CanvasRenderingContext2D
中删除mozDash
和mozDashOffset
成员(请参阅 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)。 - 根据 严格安全 Cookie 规范,不安全的站点 (
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 证书的安全页面现在将导致出现“不受信任的连接”错误(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
在 commands 清单键 中match_about_blank
在 content_scripts 清单键中
接口
- 已添加
nsIDroppedLinkHandler.dropLinks
方法和nsIDroppedLinkItem
接口以处理多个项目的拖放(Firefox bug 92737)。
XUL
- 已添加
tabbrowser.loadTabs(uris, params)
方法重载(Firefox bug 92737)。 - 已更改
browser.droppedLinkHandler
函数签名(Firefox bug 92737)。
旧版本
- 面向开发者的 Firefox 51
- 面向开发者的 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