Firefox 51 開發者發行說明
要測試 Firefox 的最新開發者功能,請安裝 Firefox Developer Edition。Firefox 51 於 2017 年 1 月 24 日釋出。本文列出了對網頁開發者、Firefox 和 Gecko 開發者以及附加元件開發者都有用的主要更改。
面向網路開發者的變更
HTML
<hr>元素現在可以用作<menu>元素中的分隔符(Firefox bug 870388)。<input>和<textarea>元素的selectionStart和selectionEnd屬性現在在沒有選定內容時,正確返回文字輸入游標的當前位置,而不是返回 0(Firefox bug 1287655)。
CSS
- 為 <input type="radio"> 實現了
:indeterminate(Firefox bug 885359)。 - 為
<input type="text">實現了:placeholder-shown(Firefox bug 1069015)。 ::placeholder偽元素現在取消了字首(Firefox bug 1069012)。- 修復了
:validCSS 偽類,該偽類與有效的<form>元素不匹配(Firefox bug 1285425)。 unicode-bidi的plaintext值現在也適用於垂直書寫模式(Firefox bug 1302734)。clip-path的fill-box和stroke-box值現在得到正確支援;以前,它們是border-box的別名(Firefox bug 1289011)。- 在具有最大高度的單行自動高度彈性容器中,限制彈性線的總高(限制拉伸的彈性項)(規範更改)(Firefox bug 1000957)。
JavaScript
- ES2015
Symbol.toStringTag屬性已實現(Firefox bug 1114580)。 - ES2015
TypedArray.prototype.toString()和TypedArray.prototype.toLocaleString()方法已實現(Firefox bug 1121938)。 DateTimeFormat.prototype.formatToParts()方法現已可用(Firefox bug 1289340)。const和let現在完全符合 ES2015(Firefox bug 950547)。- 在
for...of迴圈中使用const現在每次迭代都有一個新的繫結,並且不再丟擲SyntaxError(Firefox bug 1101653)。 - 已棄用的
for each...in迴圈現在會在控制檯中顯示警告(Firefox bug 1293205)。請將您的程式碼遷移到使用標準化的for...of迴圈。 - 生成器函式不能再有 label,並且現在不允許將
let用作 label 名稱(Firefox bug 1288459)。 - 已棄用的舊版生成器函式在方法定義中使用時現在會丟擲錯誤(Firefox bug 1199296)。
- 迭代器協議的
next()方法現在如果返回的值不是物件,則會丟擲TypeError(Firefox bug 1016936)。 - 子索引偽類選擇器應在沒有父級的情況下匹配(Firefox bug 1300374)。
開發者工具
WebGL
-
WebGL 2 現在預設啟用。請參閱 webglsamples.org/WebGL2Samples 獲取一些演示。
-
WEBGL_compressed_texture_es3擴充套件(在 Firefox 46 中實現)已重新命名為WEBGL_compressed_texture_etc(Firefox bug 1316778),並且不再預設包含在 WebGL 2 上下文中(Firefox bug 1306174)。 -
EXT_disjoint_timer_query擴充套件已更新,使用WebGLQuery物件而不是WebGLTimerQuery物件(Firefox bug 1308057)。 -
OES_vertex_array_object擴充套件現在使用 WebGL 2WebGLVertexArrayObject物件而不是其自己的WebGLVertexArrayObjectOES物件(Firefox bug 1318523)。 -
您現在可以在
WebGLRenderingContext.texImage2D()、WebGLRenderingContext.texSubImage2D()、WebGL2RenderingContext.texImage3D()或WebGL2RenderingContext.texSubImage3D()等方法中使用ImageBitmap物件作為紋理影像的來源(Firefox bug 1324924)。
IndexedDB v2
- IndexedDB 版本 2 實現現已完成
- 已新增對新
IDBObjectStore.getKey()方法的支援(Firefox bug 1271506)。 - 已新增對
IDBCursor.continuePrimaryKey()方法的支援(Firefox bug 1271505)。 - 現在支援二進位制金鑰(Firefox bug 1271500)。
- 另請參閱 “IndexedDB 2.0 新特性?” – Mozilla hacks
- 已新增對新
Canvas
- 非標準的
CanvasRenderingContext2D.mozFillRule()方法已移除;填充規則可以使用標準CanvasRenderingContext2D.fill()方法的引數定義(Firefox bug 826619)。 CanvasRenderingContext2D.imageSmoothingEnabled已取消字首(Firefox bug 768072)
SVG
- 添加了
tabindex屬性(Firefox bug 778654)。 - 添加了
href屬性,這使得xlink:href過時(Firefox bug 1245751)。 - 您現在可以透過
HTMLElement.dataset屬性和data-*SVG 屬性集在 SVG 元素上使用自定義資料屬性(Firefox bug 921834)。 - SVG 影像中使用的 CSS 動畫(在
<img>元素中呈現)現在再次起作用;這是一箇舊的迴歸(Firefox bug 1190881)。
Web Workers
- 非標準的、過時的
onclose事件處理程式和Worker使用的close事件已從 Firefox 中移除。
網路
- MIME 型別為
image/*、video/*、audio/*或text/csv的指令碼現在被阻止,不載入或執行。當它們使用<script>宣告,或透過WorkerGlobalScope.importScripts()、Worker()、SharedWorker()載入時會發生這種情況(Firefox bug 1229267 和 Firefox bug 1288361)。 - 已移除對來自公共受信任證書頒發機構的 SHA-1 證書的支援(Firefox bug 1302140)。另請參閱 逐步淘汰公共網路上的 SHA-1 以獲取更多資訊。
- 新的 WoSign 和 StartCom 證書將不再被接受(Firefox bug 1309707),請參閱 不信任新的 WoSign 和 StartCom 證書 以獲取更多資訊。
- PAC
FindProxyForURL(url, host)函式現在從 https:// URLs 中剝離路徑和查詢,以避免資訊洩漏(請參閱 Firefox bug 1255474 和 CVE-2017-5384)。
XHR
- 當解析錯誤嘗試解釋接收到的資料時,
XMLHttpRequest.responseXML屬性不再返回帶有位於頂部的 <parsererror> 節點的區域性Document。相反,它正確返回null(Firefox bug 289714)。 - 為匹配最新規範,使用
setRequestHeader()未設定Accept標頭的XMLHttpRequest現在會發送帶有該標頭的請求,其值設定為*/*(Firefox bug 918752)。 - 修復了
XMLHttpRequest.open(),以便在省略時,username和password引數現在預設設定為null,符合規範(Firefox bug 933759)。
WebRTC
RTCPeerConnection.removeStream()方法已移除。它早在 Firefox 22 中就被棄用,並且長期以來一直丟擲NotSupportedErrorDOMException。您需要為流上的每個軌道改用RTCPeerConnection.removeTrack()。- WebRTC 現在預設支援 VP9 編解碼器。Firefox 46 中新增時,VP9 預設停用,但啟用時是首選編解碼器;但是,由於其當前的 CPU 使用率,它已移至第二選擇(在 VP8 之後)。
- 方法
HTMLMediaElement.captureStream()返回包含指定<video>或<audio>內容的MediaStream。值得注意的是,它仍然以mozCaptureStream()為字首,並且尚未完全符合規範。
音訊/影片
- 在 FLAC 和 Ogg 容器中都添加了 FLAC 支援(FLAC 編解碼器)(Firefox bug 1195723)。支援的 FLAC MIME 型別有:
audio/flac和audio/x-flac。對於 Ogg 中的 FLAC,支援的 MIME 型別有:audio/ogg; codecs=flac和video/ogg; codecs=flac。 - 在 MP4 中添加了對 FLAC 的支援(無論是否帶有 MSE)(Firefox bug 1303888)。
- Firefox 50 中更改了在後臺選項卡中建立的計時器(由
Window.setInterval()、WorkerGlobalScope.setInterval()、setTimeout()和setTimeout()建立)的節流,如果 Web Audio APIAudioContext正在播放聲音,則不再發生節流。但是,這並未解決所有時間敏感音訊播放(例如使用計時器生成單個音符的音樂播放器)可能無法正常工作的情況。因此,Firefox 51 不再對具有AudioContext的後臺選項卡進行節流,即使它當前沒有播放聲音。
DOM
DOMImplementation.hasFeature()現在在所有情況下都返回true(Firefox bug 984778)。HTMLInputElement和HTMLTextAreaElement屬性selectionStart和selectionEnd現在在沒有選擇時,正確返回文字輸入游標的當前位置,而不是返回 0(Firefox bug 1287655)。HTMLImageElement介面和相應的<img>元素現在支援onerror事件處理程式,每當嘗試載入或解釋影像時發生錯誤,都會向元素髮送error事件。- 您現在可以透過設定其
effect屬性的值來更改 WebAnimation的效果。以前,此屬性是隻讀的(Firefox bug 1049975)。 - Permissions API 方法
Permissions.revoke()已置於一個首選項 (dom.permissions.revoke.enable) 之後,並預設停用,因為其設計甚至其存在本身都在 Web Application Security Working Group 中進行討論。 - 儲存 API 的
Navigator.storage屬性和StorageManager.estimate()方法以及所需的輔助程式碼已實現。儲存單元持久化功能尚未實現。請參閱 Firefox bug 1267941。 - 出於隱私原因,
BatteryManager.chargingTime和BatteryManager.dischargingTime現在將返回值四捨五入到最接近的 15 分鐘(Firefox bug 1292655)。
事件
- Firefox 現在支援
onanimationstart、onanimationiteration和onanimationend事件處理程式,此外還支援使用addEventListener()的相應事件(Firefox bug 911987)。 - Firefox 現在支援
ontransitionend事件處理程式(Firefox bug 911987)。
安全
- 當登入頁面(即包含
<input type="password">欄位的頁面)以不安全的方式提交時,Firefox 會在位址列中顯示一個帶斜槓的鎖定圖示,以警告使用者(Firefox bug 1319119)。有關更多詳細資訊,請參閱不安全密碼。
移除
- 主要用於 Firefox OS 的非標準 Simple Push API(現已被 W3C Push API 取代)已從 Gecko 中完全移除(Firefox bug 1296579)。
- 主要用於 Firefox OS 的非標準 Alarms API 已從 Gecko 中完全移除(Firefox bug 1300884)。
- 已移除對 Page Visibility API 中字首的支援(Firefox bug 812701)。
面向附加元件和 Mozilla 開發者的變更
WebExtensions
-
新 API
-
現在支援剪貼簿訪問(Firefox bug 1197451)
-
已修復傳遞給
tabs.executeScript()回撥的引數(Firefox bug 1290157) -
當解除安裝 WebExtension 時,localStorage 現在會被清除(Firefox bug 1213990)
-
Web Extensions 中更改的
Content-Type標頭現在會被考慮在內(Firefox bug 1304331)
其他
-
install.rdf的multiprocessCompatible屬性現在必須明確設定為false,以防止在安裝附加元件時在 Firefox 中啟用多程序。 -
Mozilla 特有的社交 API 已發生重大變化(主要是移除了不再使用的 API),如下所示
MozSocial介面及其支援的Navigator.mozSocial屬性已移除。- 社交書籤 API 已移除。
- 社交聊天功能已移除。
- 社交狀態 API 已移除。
- 除了分享面板之外,所有社交小部件都已移除。這包括社交側邊欄、浮動面板等。
- 所有支援已移除 API 的使用者介面功能和特性也已移除。
- 支援已移除功能的社交服務提供商清單屬性不再受支援。
-
如果附加元件使用
mimeTypes.rdf提供副檔名到 MIME 型別的對映,它現在必須在"ext-to-type-mapping"類別中註冊一個條目(Firefox bug 306471)。 -
瀏覽器 API 現在在
mozbrowserlocationchange事件的物件上包含一個detail物件,該物件包含canGoForward/canGoBack屬性,允許同步檢索 mozBrowser 的後退/前進狀態(Firefox bug 1279635)。