Firefox 50 開發者版本發行說明
要測試 Firefox 最新的開發者功能,請安裝 Firefox Developer Edition。Firefox 50 於 2016 年 11 月 15 日釋出。本文列出了對網頁開發者、Firefox 和 Gecko 開發者以及附加元件開發者都有用的關鍵更改。
面向網路開發者的變更
HTML
<bdo>的預設樣式現在將unicode-bidi設定為isolate-override值(Firefox bug 1249497)。- 設定
<track>元素的src屬性現在可以正常工作(Firefox bug 1281418)。 <area>、<a>、<img>、<iframe>和<link>元素上的referrerpolicy屬性現在預設可用(Firefox bug 1223838,Firefox bug 1264165)。
CSS
- 帶有 border-radius 以及虛線和點線樣式的圓角現在以指定樣式而不是實線樣式渲染(Firefox bug 382721)。
- 非標準的
:-moz-full-screen-ancestor偽類選擇器已被刪除(Firefox bug 1199529)。 box-sizing: padding-box已被刪除,因為它不再是規範的一部分,並且 Firefox 是唯一實現它的主流瀏覽器(Firefox bug 1166728)。unicode-bidi屬性的isolate、isolate-override和plaintext三個值已取消字首(Firefox bug 1141895)。- 在怪異模式下,列表項的專案符號現在繼承列表的大小,就像在標準模式下一樣(Firefox bug 648331)。
:in-range和:out-of-range偽類的行為已更改,不再匹配停用或只讀的輸入(Firefox bug 1264157)。:any-link偽類現在已取消字首(Firefox bug 843579)。- 已實現
border-image-repeat的space值(Firefox bug 720531)。
JavaScript
- 已實現 ES2015
Symbol.hasInstance屬性(Firefox bug 1054906)。 - 已實現 ES2017
Object.getOwnPropertyDescriptors()方法(Firefox bug 1245024)。 RegExp中帶有 unicode 和 ignoreCase 標誌的 \W 行為已更改,以匹配最新的草案規範。現在它不匹配 K、S、k、s、KELVIN SIGN (U+212A) 和 LATIN SMALL LETTER LONG S (U+017F)(Firefox bug 1281739)。
開發者工具
HTTP
- 實驗性(和已棄用)的 SPDY 3.1 現在預設停用 Firefox bug 1287132。
- 已新增對
X-Content-Type-Options的支援(Firefox bug 471020)。 - 已實現 cookie 字首
__Host-和__Secure-。請參閱Set-Cookie和 Firefox bug 1283368。 - 已實現
Referrer-Policy頭部 Firefox bug 1264164。
安全
<a>元素的ping屬性現在遵循connect-srcCSP 1.1 策略指令(Firefox bug 1100181)。- 已新增對
sandboxCSP 指令的支援(Firefox bug 671389)。 - 現在可以為 worker 設定 內容安全策略(Firefox bug 959388)。
- 如果信標資料因 內容安全策略 限制而無法傳送,
Navigator.sendBeacon()方法不再丟擲異常;相反,它按預期返回false(Firefox bug 1234813)。 - RC4 加密支援在 Firefox 36 中已棄用,在 Firefox 44 中預設停用。一年寬限期已結束,因此 Firefox 50 刪除了對 RC4 的所有支援(Google Chrome 已於 2016 年 8 月刪除了對 RC4 的支援)。從現在起,任何時候 Firefox 遇到 RC4 加密,它都會報告
SSL_ERROR_NO_CYPHER_OVERLAP錯誤。
網路
- 當非同步
XMLHttpRequest發生錯誤時,XMLHttpRequest.getAllResponseHeaders()方法現在返回一個空字串(Firefox bug 1286744)。 - 非同步
XMLHttpRequest由於 CORS 或其他網路限制而失敗時,不再返回NetworkError,而是引發一個可以像其他錯誤一樣捕獲的error(Firefox bug 709991)。 XMLHttpRequest.getResponseHeader()和XMLHttpRequest.getAllResponseHeaders()現在預設也返回空頭部。這可以透過首選項network.http.keep_empty_response_headers_as_empty_string進行控制(Firefox bug 918721)。only-if-cached選項已新增到Request.cache(Firefox bug 1272436)。
DOM
- 現在支援
EventTarget.addEventListener()的once選項(Firefox bug 1287706)。 NodeList介面現在是可迭代的,並且forEach()、values()、NodeList.entries()和NodeList.keys()方法現在可用(Firefox bug 1290636)。DOMTokenList介面現在是可迭代的,並且forEach()、values()、DOMTokenList.entries()和DOMTokenList.keys()方法現在可用(Firefox bug 1290636)。Document.createElement()和Document.createElementNS()方法現在有一個可選的options引數,用於建立 自定義元素(Firefox bug 1276579)。
SVG
allowReorder屬性已刪除,它設定的行為現在是 SVG<switch>元素的預設行為(Firefox bug 1279690)。- SVG
<image>元素上preserveAspectRatio屬性的defer關鍵字已刪除,以遵循最新的 SVG2 規範(Firefox bug 1280425)。
拖放 API
- 已實現
DataTransfer.items屬性,允許使用 HTML 拖放 API 訪問多個正在拖放的專案。為此,現在也支援DataTransferItem和DataTransferItemList介面(Firefox bug 906420)。此功能預設啟用。 - 舊的、已過時的 Firefox 特定拖放 API 事件
dragdrop和draggesture不再受支援。請務必更新任何仍在使用這些事件的程式碼,以使用 HTML 拖放 API(Firefox bug 1162050)。
Pointer Lock API
- 指標鎖定 API 現在已取消字首(Firefox bug 991899)。
- 在 Firefox 50 之前,
requestPointerLock()會透過門式懸掛器請求許可權,並且直到使用者授予許可權後才啟用指標鎖定。從 Firefox 50 開始,指標鎖定類似於 全屏 API:它會立即授予,但會顯示一條通知,向用戶解釋如何退出(Firefox bug 1273351)。
IndexedDB
- 當相應資料庫意外關閉時,現在會向
IDBDatabase物件傳送close事件(Firefox bug 1151017)。
Service Workers
- 已實現
WindowClient.navigate()方法。此方法允許您在由服務工作執行緒控制的客戶端視窗中開啟指定的 URL(Firefox bug 1218148)。
WebGL
- 已實現
EXT_shader_texture_lodWebGL 擴充套件(Firefox bug 1111689)。 - WebGL 2 的 texImage 方法已更新,以實現 PBO(
PIXEL_UNPACK_BUFFER)(Firefox bug 1280499)。
WebRTC
- 向
MediaStream新增軌道現在會按照規範生成addtrack事件。該事件型別為MediaStreamTrackEvent,並在新增軌道的流上觸發。您可以使用MediaStream.addEventListener('addtrack', ...)或onaddtrack屬性來處理"addtrack"事件。 MediaStreamTrack介面現在支援ended事件及其事件處理程式。- Firefox 現在支援
MediaStreamTrack.readyState屬性,該屬性指示軌道是活動狀態還是已永久結束。 - 已實現
MediaStreamTrack方法getConstraints()和getSettings();這些方法分別允許您獲取最新應用的一組自定義屬性約束和所有軌道可約束屬性的實際值。隨附的資料型別也已記錄。 RTCDataChannel.stream屬性已刪除。在 Firefox 24 中,此屬性已替換為RTCDataChannel.id,但為向後相容性而支援。如果您尚未更新程式碼,請務必更新您的程式碼以使用id屬性。
Web Audio API
PannerNode介面現在支援用於音訊源的位置(PannerNode.positionX、PannerNode.positionY和PannerNode.positionZ)和方向(PannerNode.orientationX、PannerNode.orientationY和PannerNode.orientationZ)的 3D 笛卡爾空間屬性。- 已實現
IIRFilterNode介面,該介面實現了一般的 無限脈衝響應(IIR)濾波器。 - 如果 Web Audio API
AudioContext正在主動播放聲音,則由Window.setInterval()、WorkerGlobalScope.setInterval()、setTimeout()和setTimeout()建立的計時器在後臺選項卡中不再受到限制。這有助於防止背景中對時間敏感的音訊播放(例如使用計時器生成單個音符的音樂播放器)出現問題(Firefox bug 1181073)。
音訊/影片
AlignSetting列舉(表示VTTCue.align的可能值)之前錯誤地包含了值"middle"而不是"center"。這已得到糾正(Firefox bug 1276130)。- 非標準和實驗性方法
HTMLMediaElement.seekToNextFrame()現在以非同步方式而不是同步方式在媒體中查詢下一幀,並返回一個Promise,該 Promise 在查詢完成後解析。 HTMLTrackElement的實現已更正,允許<track>元素即使不在文件中也能載入資源(Firefox bug 871747)。
電池 API
- 自 Firefox 43 以來已棄用的
Navigator.battery屬性現在已過時並已刪除。請改用navigator.getBattery()方法獲取電池Promise,該 Promise 在BatteryManager可用時解析;BatteryManager將傳遞給 Promise 的 fulfilled 處理程式(Firefox bug 12593355)。
檔案和目錄
-
已實現 檔案和目錄條目 API 的子集,以提高與以前僅與 Google Chrome 相容的站點的相容性(Firefox bug 1265767)。
-
已實現非同步 API 介面,但僅支援檔案讀取;例如,
FileSystemFileEntry.createWriter()方法是一個空操作。 -
已實現以下介面
-
已實現
HTMLInputElement.webkitdirectory以及<input>元素的webkitdirectory屬性;這允許您將檔案輸入配置為接受目錄而不是檔案(Firefox bug 1258489)。 -
已實現
HTMLInputElement.webkitEntries;這返回一個基於FileSystemEntry的物件陣列,表示選定的專案。 -
已實現
File.webkitRelativePath;這包含檔案相對於包含FileSystemDirectoryEntry根目錄的路徑,該目錄是HTMLInputElement.webkitEntries返回列表中的專案之一。 -
這些 API 現在預設啟用;有些以前可用,但僅限於某個首選項(Firefox bug 1288683)。
-
-
作為 檔案和目錄條目 API 的一部分,我們實現了
DataTransferItem.webkitGetAsEntry();這允許您獲取表示拖放檔案的FileSystemEntry(Firefox bug 1289255)。此功能預設啟用。 -
HTMLInputElement.directory屬性,作為 目錄上傳 API 提案的一部分,已重新命名為allowdirs(Firefox bug 1288681)。此屬性隱藏在首選項後面。