Firefox 44 开发者发行说明
要测试 Firefox 最新的开发者功能,请安装 Firefox Developer Edition。Firefox 44 于 2016 年 1 月 26 日发布。本文列出了对网页开发者、Firefox 和 Gecko 开发者以及附加组件开发者都有用的主要更改。
面向网络开发者的变更
开发者工具
亮点
HTML
<link rel="prefetch">现在遵循crossorigin属性 (Firefox bug 1214819)。
CSS
-
position: fixed;现在总是创建一个新的堆叠上下文 (Firefox bug 1179288)。 -
默认启用对
unicode-range的支持 (Firefox bug 1119062)。 -
我们的 CSS 书写模式实验性实现已更新以反映最新规范
- 已实现
text-orientation属性的sideways值,并使sideways-right成为其别名 (Firefox bug 1193488)。 writing-mode属性的sideways-rl和sideways-lr值 (Firefox bug 1193488 和 Firefox bug 1193519)。
- 已实现
-
非标准属性
-moz-math-display和-moz-window-shadow不再可从 Web 内容中获得 (Firefox bug 1207002、Firefox bug 1211040 和 Firefox bug 1212607)。 -
当两种变体都可用时,
font-style属性现在区分oblique和italic(Firefox bug 543715)。 -
尽管不受支持,但属性
marks、orphans、page、size和widows被解析,并且@supports错误地报告它们受支持;这已得到修复,并且这些属性不再被解析,也不再标记为受支持 (Firefox bug 1215702)。 -
内部值
-moz-mac-unified-toolbar已从appearance属性的可能值中删除 (Firefox bug 1206468)。 -
为了 Web 兼容性,在首选项
layout.css.prefixes.webkit(默认为false)之后添加了几个-webkit前缀属性和值 (Firefox bug 837211)-webkit-animation-webkit-animation-delay-webkit-animation-direction-webkit-animation-duration-webkit-animation-fill-mode-webkit-animation-iteration-count-webkit-animation-name-webkit-animation-play-state-webkit-animation-timing-function-webkit-text-size-adjust-webkit-transform-webkit-transform-origin-webkit-transform-style-webkit-transition-webkit-transition-delay-webkit-transition-duration-webkit-transition-property-webkit-transition-timing-function-webkit-border-radius-webkit-border-top-left-radius-webkit-border-top-right-radius-webkit-border-bottom-left-radius-webkit-border-bottom-right-radius-webkit-appearance-webkit-background-clip-webkit-background-origin-webkit-background-size-webkit-border-image-webkit-box-shadow-webkit-box-sizing-webkit-user-select-webkit-linear-gradient()Firefox bug 1210575-webkit-radial-gradient"()Firefox bug 1210575-webkit-repeating-linear-gradient()Firefox bug 1210575-webkit-repeating-radial-gradient()Firefox bug 1210575
JavaScript
新 API
- 已实现
Symbol.toPrimitive、Symbol.prototype[Symbol.toPrimitive]()和Date.prototype[Symbol.toPrimitive]()(Firefox bug 1054756)。
变更
- 全局级别的
let和const绑定已符合 ES2015 语义。请参阅 Firefox bug 589199 和博客文章 "Firefox Nightly 44 中 let 和 const 的重大更改"。此外,let现在可用于默认 Web JavaScript(严格模式和非严格模式),并且不再需要版本选择加入 (Firefox bug 932517)。 - 如果 类型化数组(如
Int8Array)和ArrayBuffer的构造函数在没有new操作符的情况下作为函数调用,现在会抛出TypeError,这符合 ES2015 规范 (Firefox bug 980945, Firefox bug 1214936)。 RegExp的 sticky 标志现在遵循 ES2015 标准的锚定 sticky 正则表达式 (Firefox bug 773687)。- JavaScript shell (SpiderMonkey 的 REPL) 现在默认为默认的、Web 兼容的 JS 版本(不再是 JS1.7+)(Firefox bug 1192329)。
移除
- 对非标准
let块 的支持已删除 (Firefox bug 1167029。 - 非标准和已弃用的属性
Object.prototype.__noSuchMethod__已删除 (Firefox bug 683218)。
接口/API/DOM
DOM 和 HTML DOM
- 为了与某些现有网站兼容,
Document.charset属性已作为Document.characterSet的别名实现 (Firefox bug 647621)。 - 对
window.sidebar.addSearchEngine()方法的支持已删除,该方法允许网页调用 Sherlock 插件的安装,现在它只在 Web Console 中记录一个警告 (Firefox bug 862148)。 - 为了打击不必要的弹出窗口,对于尚未交互的页面中
beforeunload事件请求的提示不再显示 (Firefox bug 636905)。 - 已弃用的方法
MessageEvent.initMessageEvent()已为向后兼容性重新实现 (Firefox bug 949376)。 - 已移除过时的属性
DocumentType.internalSubset(Firefox bug 801545)。 - 为了与现有网站兼容,已实现
Window.orientation属性和orientationchange事件 (Firefox bug 920734)。 - 显式全屏请求的
<iframe>不应隐式退出全屏 (Firefox bug 1187801)。 - 现在,
mouseover、mouseout、mouseenter、mouseleave、pointermove、pointerover、pointerout、pointerenter和pointerleave事件会为禁用的表单元素触发 (Firefox bug 218093)。 - 为了提高互操作性,已添加方法
Element.webkitMatchesSelector()(Firefox bug 1216193)。 - 为匹配规范,
Document.createAttribute()方法现在将输入转换为小写 (Firefox bug 1176313)。 Window.open()的非标准dialog功能不再可用于 Web 内容。它仍然可用于具有 chrome 权限的扩展和其他代码 (Firefox bug 1095236。
Canvas
- 一个新的实验性
OffscreenCanvasAPI 已经实现,它允许渲染上下文(如 WebGL)在 Web Workers 中运行。要使用此实验性 API,请在 about:config 中将gfx.offscreencanvas.enabled设置为true(Firefox bug 709490)。此 API 包括OffscreenCanvas接口,HTMLCanvasElement.transferControlToOffscreen(),以及WebGLRenderingContext.commit().- 当此 API 启用时,几个 WebGL 接口现在也可在 worker 上下文中使用。
WebGL
- 已实现统一缓冲区对象 (Firefox bug 1048747)。
IndexedDB
IDBIndex.getAll()和IDBIndex.getAllKeys(),以及它们在IDBObjectStore上的对应项现在默认可用 (Firefox bug 1196841)。
Service Workers
- 已实现
ServiceWorkerMessageEvent和ExtendableMessageEvent接口 (Firefox bug 1143717 和 Firefox bug 1207068)。 Headers对象现在支持对迭代器,这意味着方法Headers.entries()、Headers.keys()和Headers.values()现在可用;Symbol.iterator现在也为它们返回默认迭代器 (Firefox bug 1108181)。- 在 Service Workers 上已禁用
XMLHttpRequestAPI (Firefox bug 931243)。 FetchEvent接口现在扩展了ExtendableEvent,使其能够访问ExtendableEvent.waitUntil()方法。 (Firefox bug 1214772)。- 根据规范的最新更改,
FetchEvent.client已被删除 (Firefox bug 1218135)。 - 为了匹配最新规范,
ServiceWorkerContainer.onreloadpage已被删除 (Firefox bug 1218139)。 - 事件处理程序
ServiceWorkerGlobalScope.onbeforeevicted和ServiceWorkerGlobalScope.onevicted已被删除,因为它们不符合规范。它们将在未来重新引入,但它们的删除将允许功能检测按预期工作 (Firefox bug 1218142)。 - 在
FetchEvent()构造函数中,如果选项字典中不存在isReload成员,它现在默认为false(Firefox bug 1216401)。 Client.frameType属性现在在正确的接口上实现;之前它在WindowClient上 (Firefox bug 1218146)。- 当 AppCache 用于为页面提供离线支持时,现在会在控制台中显示警告消息,建议开发者改用 Service workers (Firefox bug 1204581.)
- Service workers 已在 Gecko 中默认启用。
WebRTC
-
WebRTC 接口已移除前缀 (Firefox bug 1155923)。特别是
mozRTCPeerConnection现在是RTCPeerConnection。mozRTCIceCandidate现在是RTCIceCandidate。mozRTCSessionDescription现在是RTCSessionDescription。
-
已实现
RTCDataChannel.bufferedAmountLowThreshold属性,以及bufferedamountlow事件及其事件处理程序 (Firefox bug 1178091)。 -
已添加属性
RTCPeerConnection.canTrickleIceCandidates,并移除了非标准方法RTCPeerConnection.updateIce()(Firefox bug 1209744)。 -
MediaStream接口现在支持MediaStream.addTrack()和MediaStream.removeTrack()方法 (Firefox bug 1103188)。 -
已实现构造函数
MediaStream()(Firefox bug 1070216)。 -
已删除对
RTCOfferOptions的非标准约束样式选项列表的支持。
新 API
- Workers 中 Canvas API 的实验性实现已落地:
OffscreenCanvas和HTMLCanvasElement.transferControlToOffscreen()在gfx.offscreencanvas.enabled首选项后可用,目前默认禁用 (Firefox bug 709490)。 - Web Speech API 的 Text2Speech API 现在有一个 OS X 后端。但这默认是禁用的 (Firefox bug 1003452)。
杂项
URLSearchParams对象现在支持对迭代器,这意味着方法URLSearchParams.entries()、URLSearchParams.keys()和URLSearchParams.values()现在可用;Symbol.iterator现在也为它们返回默认迭代器 (Firefox bug 1085284)。FormData对象现在支持对迭代器,这意味着方法FormData.entries()、FormData.keys和FormData.values()现在可用;Symbol.iterator现在也为它们返回默认迭代器 (Firefox bug 1127703)。- 当
XMLHttpRequest.send()与 HTML 文档一起使用时,它现在使用text/html而不是application/xml(Firefox bug 918771)。 - 文本转语音 (text-to-speech) 已在 Mac 和 Linux 上的 Firefox 桌面版中实现,隐藏在
about:config中的media.webspeech.synth.enabled标志后面 (Firefox bug 1003452, Firefox bug 1003464)。有关更多信息,请参阅 Web Speech API。 - 在
<frame>或<object>内部的元素不再能设置为全屏 (Firefox bug 1212299)。 - WOFF 字体的清理变得更加严格,导致更多不正确的字体被拒绝,此清理在 Firefox 46 中变得稍微不那么严格 (Firefox bug 1193050 和 Firefox bug 1244693)。
MathML
无更改。
SVG
无更改。
音频/视频
无更改。
HTTP
- 已添加对 Brotli 算法的支持,并且
Accept-Encoding和Content-Encoding标头现在都支持br值 (Firefox bug 366559 和 Firefox bug 1211916)。 - 已删除对包含换行符 (
'/n') 的 HTTP/2 标头的不正确支持,因为规范不允许这样做,不像 HTTP/1 (Firefox bug 1197847)。
网络
无更改。
安全
- RC4 现在也在浏览器的 Beta 和 Release 版本中默认禁用 (Firefox bug 1201025),并且白名单现在默认为空 (Firefox bug 1215796)。
面向附加组件和 Mozilla 开发者的变更
接口
无更改。
XUL
无更改。
JavaScript 代码模块
- 向 Sqlite.jsm 添加了
LIKE支持 (Firefox bug 1188760)。 - 将 Snackbars.jsm 模块添加到 Firefox for Android (Firefox bug 1215026)
XPCOM
nsIDOMWindow接口现在是空的。其内容要么不再使用,要么已移至其他位置,要么仅从 C++ 使用。现在可从 C++ 代码访问的项目位于 nsPIDOMWindow 接口中 (Firefox bug 1216401)。
其他
- 由于 Firefox 44 中的重大更改 (bug 1202902),使用 cfx 打包的附加组件将不再工作。要使您的附加组件再次兼容,请使用 jpm。请参阅 cfx 到 jpm 迁移指南。