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)。 MediaDevicesdevicechange事件及其对应的处理程序在 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
sessionsAPItopSitesAPIomniboxAPIruntime.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)。