Firefox 53 开发者版发行说明
Firefox 53 于 2017 年 4 月 19 日发布。本文列出了对 Web 开发者、Firefox 和 Gecko 开发者以及附加组件开发者都有用的主要更改。
面向网络开发者的变更
开发者工具
- 避免 APZ 提供的荧光笔出现滚动延迟(Firefox bug 1312103)。
- 添加了复制元素完整 CSS 路径的选项(复制完整 CSS 路径)(Firefox bug 1323700)。
- DevTools 支持 css-color-4(Firefox bug 1310681)。
- 标记视图:在折叠节点的开始标签和结束标签之间添加视觉提示(Firefox bug 1323193)。
CSS
新功能
mask-*详细属性(参见 CSS 遮罩)均已默认支持和可用(参见 Firefox bug 1251161)。- 添加了
caret-color属性(Firefox bug 1063162)。 - 实现了
place-items/place-self/place-content简写(Firefox bug 1319958)。 - 向
display属性添加了flow-root值(Firefox bug 1322191)。 -moz-tab-size现在接受<length>值(Firefox bug 943918),并且现在可动画化(Firefox bug 1308110)。mask-mode:luminance 在渐变遮罩上不起作用(Firefox bug 1346265)。- [css-grid]
grid-template-rows中的 FR 单位未填充视口(Firefox bug 1346699)。 - 如果 flex item 被一个 abspos 兄弟元素隔开,则不按“order”排序(Firefox bug 1345873)。
其他更改
- 在 SVG 元素上启用 mask longhands(Firefox bug 1319667)。
- [css-grid] 修复:
align-self/justify-self:stretch/normal在<table>网格项上不起作用(Firefox bug 1316051)。 - 修复:
clip-path: circle()在大参考框和百分比半径下渲染不正确(Firefox bug 1324713)。 - 当对希腊文本应用
text-transform值为uppercase时,离析 eta (ή) 上的重音不再被移除(参见 Firefox bug 1322989)。 display的contents值的可用性曾通过layout.css.display-contents.enabled首选项控制。在 Firefox 53 中,此首选项已完全移除,因此该值将始终可用且无法再禁用(Firefox bug 1295788)。
JavaScript
- 已实现
Function.name属性的 ECMAScript 2015 语义。这包括匿名函数的推断名称(var foo = function() {})(Firefox bug 883377)。 - 已实现关闭迭代器的 ECMAScript 2015 语义。这会影响
for...of循环等(Firefox bug 1147371)。 - 已实现 模板字面量修订提案,该提案 取消了对带标签模板字面量的转义序列限制(Firefox bug 1317375)。
- 根据 ES2016,
TypedArray对象的静态length属性已从 3 更改为 0(Firefox bug 1317306)。 SharedArrayBuffer现在可以在DataView对象中使用(Firefox bug 1246597)。- 在规范的早期版本中,
SharedArrayBuffer对象在 结构化克隆 期间需要显式传输。在新规范中,它们不再是 可传输对象,因此不得在传输列表中。新行为过去只显示控制台警告,但现在将抛出错误(Firefox bug 1302037)。 ArrayBuffer长度现在限制为Number.MAX_SAFE_INTEGER(>= 2 ** 53)(Firefox bug 1255128)。Error和其他原生错误对象原型,如RangeError等,现在是普通对象而不是真正的 Error 对象。(特别是,Object.prototype.toString.call(Error.prototype)现在是"[object Object]"而不是"[object Error]"。)(Firefox bug 1213341)。
事件
- CSS 过渡:已实现
transitionstart、transitionrun和transitioncancel事件(参见 Firefox bug 1264125 和 Firefox bug 1287983)。 - 已实现
CompositionEvent构造函数(参见 Firefox bug 1002256)。 - 已实现
MouseEvent.clientX/MouseEvent.clientY的MouseEvent.x和MouseEvent.y别名(参见 Firefox bug 424390)。 - 已实现
auxclick事件和相应的事件处理程序(参见 Firefox bug 1304044)。 - 在 过渡 取消后,现在会触发
transitioncancel事件。
DOM
- 链接的
pathname和search属性(例如<a>和<link>元素的接口)以前返回的是 URL 的错误部分。例如,对于 URLhttp://z.com/x?a=true&b=false,pathname会返回"/x?a=true&b=false",search会返回"",而不是"/x"和"?a=true&b=false"。现在已修复此问题(Firefox bug 1310483)。 URLSearchParams()构造函数现在接受字符串或字符串序列作为初始化对象(Firefox bug 1330678)。- 已实现 Selection API 的
Selection.setBaseAndExtent()方法(参见 Firefox bug 1321623)。 - 已在 Gecko 中实现了
file类型<input>values的 “fakepath” 附加功能,使其与其他浏览器保持一致(参见 Firefox bug 1274596)。 - 已实现
Node.getRootNode(),取代已弃用的Node.rootNode属性(Firefox bug 1269155)。 Plugin和PluginArray对象的自有属性不再可枚举(Firefox bug 1270366)。MimeTypeArray对象的命名属性不再可枚举(Firefox bug 1270364)。- 权限 API 现在有一个新的可用权限名称 —
persistent-storage— 用于进行Permissions.query()(参见 Firefox bug 1270038)。这允许源使用持久框(即 持久存储)进行存储,根据 存储 API。 - 已实现
Performance.timeOrigin属性(Firefox bug 1313420)。
Worker 和 Service Worker
- 网络信息 API 现在在 worker 中可用(参见 Firefox bug 1323172)。
- 服务器发送事件 现在可以在 worker 中使用(参见 Firefox bug 1267903)。
ExtendableEvent.waitUntil()现在可以异步调用(参见 Firefox bug 1263304)。
WebGL
- 已实现
WEBGL_compressed_texture_astcWebGL 扩展(Firefox bug 1250077)。 WEBGL_debug_renderer_infoWebGL 扩展现在默认启用(Firefox bug 1336645)。
音频、视频和媒体
通用
- 从 Firefox 53 for Android 开始,媒体解码将在进程外处理,以提高多核系统上的性能(Firefox bug 1333323)。
媒体元素
- 用于开始播放任何媒体元素中的媒体的
HTMLMediaElement.play()方法现在返回一个Promise,该 Promise 在播放开始时兑现,如果发生错误则拒绝(Firefox bug 1244768)。
Web Audio API
- 已添加
AudioScheduledSourceNode接口,并且AudioBufferSourceNode、ConstantSourceNode和OscillatorNode接口现在都基于它(Firefox bug 1324568)。 - 所有不同的音频节点类型都已添加了构造函数(Firefox bug 1322883)。
WebRTC
RTCPeerConnection方法createOffer()和createAnswer()现在返回一个Promise,该 Promise 返回一个符合RTCSessionDescriptionInit字典的对象,而不是直接返回RTCSessionDescription。现有代码将继续工作,但新代码可以更简单地编写。- 类似地,
RTCPeerConnection方法setLocalDescription()和setRemoteDescription()现在接受符合字典RTCSessionDescriptionInit字典的对象作为输入。现有代码继续工作,但可以简化。 RTCPeerConnection.addIceCandidate()现在接受一个初始化对象作为输入。这与现有代码兼容,但在与上述更改结合使用时,可以稍微更简单地编写新代码(Firefox bug 1263312)。- 现在默认启用 DTMF 支持,使用
RTCDTMFSender。有关其工作原理的更多信息,请参见 将 DTMF 与 WebRTC 结合使用。
HTTP/网络
-
Gecko 现在在
about:config中提供一个首选项,允许用户设置其默认Referrer-Policy—network.http.referer.userControlPolicy(Firefox bug 1304623)。可能的值为- 0 —
no-referrer - 1 —
same-origin - 2 —
strict-origin-when-cross-origin - 3 —
no-referrer-when-downgrade(默认值)
- 0 —
-
为了支持 应用层协议协商 (ALPN),已移除对下一协议协商 (NPN) 的支持 — 参见 Firefox bug 1248198。
-
Large-AllocationHTTP 标头现在默认可用,不再隐藏在首选项后面(Firefox bug 1331083)。
SVG
- 部分实现了
SVGGeometryElement接口(Firefox bug 1239100)。
Web 平台移除的内容
HTML/XML
dom.details_element.enabled首选项 — 用于控制在 Firefox 中启用/禁用<details>和<summary>元素支持 — 已从about:config中移除。这些元素(最初在 Firefox 49 中默认启用)无法再禁用。参见 Firefox bug 1271549。<iframe>元素/HTMLIFrameElement接口的mozapp属性已移除 — 此属性曾用于在以 mozilla 为前缀的浏览器 API<iframe>中嵌入 Firefox OS 应用(Firefox bug 1310845)。- 已移除
HTMLIFrameElement.setInputMethodActive()方法和InputMethod接口(用于在 Firefox OS 应用上设置和管理 IME)(Firefox bug 1313169)。
CSS
- 已移除
:dir()伪类的-moz前缀变体(Firefox bug 1270406)。 - 已移除
text-align-last的-moz前缀版本(Firefox bug 1276808)。 - 已移除
calc()方法的-moz前缀变体(Firefox bug 1331296)。 - 已移除专有的
-moz-samplesize媒体片段(为方便向低内存 Firefox OS 设备提供降采样图像而添加;参见 Firefox bug 854795)(Firefox bug 1311246)。
JavaScript
- 已移除非标准的
ArrayBuffer.slice()方法(但保留了标准化版本ArrayBuffer.prototype.slice(),参见 Firefox bug 1313112)。
API
- 已从平台中移除 Wi-Fi 信息 API、扬声器管理器 API、网络共享 API 和设置 API(分别参见 Firefox bug 1313788、Firefox bug 1317853、Firefox bug 1313789 和 Firefox bug 1313155)。
其他
- 已从
HTMLEmbedElement和HTMLObjectElement接口中移除legacycaller(Firefox bug 909656)。
面向附加组件和 Mozilla 开发者的变更
WebExtensions
新 API
增强型 API
storage.synccontextMenus中的page_action、browser_action、password、tab上下文类型webRequest.onBeforeRequest现在支持requestBodytabs.insertCSS现在支持cssOrigin,使您能够插入用户样式表。
JavaScript 代码模块
- 异步 AddonManager API 现在支持
Promises以及回调(Firefox bug 987512)。