Firefox 55 開發者版本說明
Firefox 55 於 2017 年 8 月 8 日釋出。本文列出了對 Web 開發者有用的主要更改。
面向網路開發者的變更
開發者工具
- 增加了按列值和其他屬性(Firefox bug 1041895、Firefox bug 1354508、Firefox bug 1354507)以及使用正則表示式(Firefox bug 1354495)來過濾網路請求的功能。
- 現在可以在網路監視器中顯示和隱藏列(Firefox bug 862855)。
- 為網路監視器添加了遠端 IP(Firefox bug 1344523)、協議(Firefox bug 1345489)、協議方案(Firefox bug 1356867)、Cookie 和 Set-Cookie 列(Firefox bug 1356869)。
- 現已支援
SourceMapHTTP 標頭(早期版本支援已棄用的X-SourceMap標頭,詳見 Firefox bug 1346936)。
HTML
- 對於
contenteditable屬性設定為true的元素,現在使用<div>元素來分隔不同行的文字,以使 Firefox 與其他現代瀏覽器保持一致(Firefox bug 1297414)。 - 在 Nightly 版本中預設啟用
dom.forms.datetime(Firefox bug 1366188)。
CSS
- 預設公開
transform-box屬性(Firefox bug 1208550)。 - 實現了
frames()計時函式(Firefox bug 1248340)。 - 實現了
text-justify屬性(Firefox bug 1343512, Firefox bug 276079)。 - [css-grid]
fit-content在repeat()中意外地為完整的 clamp 尺寸保留了空間(Firefox bug 1359060)。 float/clear的邏輯值——inline-start和inline-end——之前已經實現,但在釋出渠道中預設關閉,現在所有渠道中預設可用(Firefox bug 1253919)。layout.css.variables.enabled首選項已被完全移除,這意味著 CSS 變數功能始終啟用,無法再被停用(Firefox bug 1312328)。- 實現了專有的
-moz-context-properties屬性(Firefox bug 1058040)。 - 在
linear-gradient()中,不帶單位的零(0)角度值未被正確解釋(Firefox bug 1363292)。 - 現已支援
::cue偽元素;它匹配媒體元素中呈現的文字提示(Firefox bug 1318542)。
SVG
<radialGradient>的fr屬性已實現(Firefox bug 1240275)。
JavaScript
SharedArrayBuffer和Atomics物件現已預設啟用。關於 JavaScript 共享記憶體和 Atomics 的介紹,請參見 初探 JavaScript 的新並行原語。- 現在物件解構中支援剩餘運算子(
...),並且擴充套件運算子(...)現在可在物件字面量中使用(ECMAScript 第 3 階段提案:物件 Rest/Spread 屬性,Firefox bug 1339395)。 - 現已支援非同步生成器方法(Firefox bug 1353693)。
String.prototype.toLocaleLowerCase()和String.prototype.toLocaleUpperCase()方法現在支援可選的locale引數,以指定用於特定區域設定的大小寫對映的語言標籤(Firefox bug 1318403)。Intl.Collator物件現在支援caseFirst選項(Firefox bug 866473)。- 當未提供區域設定時,Intl API 現在使用瀏覽器的預設區域設定,而不是作業系統的預設區域設定(Firefox bug 1346674)。
- 模板呼叫點物件現在根據其原始字串列表,在每個 realm 中進行規範化(Firefox bug 1108941)。
TypedArray建構函式(如Int8Array、Float32Array等)已更新至 ES2017。它們現在使用ToIndex操作,並允許不帶引數的建構函式,這將返回零長度的型別化陣列(Firefox bug 1317383)。
API
新 API
- 後臺任務協作排程 API(也稱為後臺任務 API 或
requestIdleCallbackAPI)自 Firefox 53 以來一直透過首選項提供,現已預設啟用。此 API 允許你安排任務在瀏覽器確定下次重繪前有空閒時間時執行,這樣你的程式碼就可以利用這段時間而不會造成明顯的效能延遲(Firefox bug 1314959)。 - WebVR 1.1 API 現已在 Windows 上預設開啟(並在 Nightly 版本的 macOS 上可用)。該 API 向 Web 應用暴露虛擬現實裝置——例如 Oculus Rift 或 HTC Vive 等頭戴式顯示器——使開發者能夠將來自顯示器的位置和移動資訊轉換為在 3D 場景中的移動,並將內容呈現到此類顯示器中。
- 新增了 Intersection Observer API——它提供了一種非同步觀察目標元素與祖先元素或頂級文件視口交集變化的方法(Firefox bug 1321865)。
DOM
Window的屬性scrollX和scrollY(以及它們的別名pageXOffset和pageYOffset)已更新為支援亞畫素精度。它們現在返回一個浮點數值,而不是整數,從而在支援亞畫素精度的顯示器上更準確地描述滾動位置(Firefox bug 1151421)。如果需要,你可以使用Math.round()將它們轉換為整數。MediaQueryList(及其他相關功能)已更新以匹配最新規範。請參閱 Firefox bug 1354441,以及MediaQueryList和MediaQueryListEvent。DOMTokenList中修改列表值的方法現在會自動修剪空白並移除重複的令牌(Firefox bug 869788,另請參閱 空白修剪和重複項移除)。HTMLInputElement的maxLength屬性現在可以在相應的 HTML 建立後透過 JavaScript 動態更改(Firefox bug 1352799)。URL()建構函式不再接受DOMString作為其 base(第二個引數)——它只接受USVString。它仍然可以使用現有的URL物件作為 base,該物件會將其自身字串化為物件的href屬性(Firefox bug 1368950)。
DOM 事件
Document.createEvent()方法支援的事件型別已根據最新的 DOM 規範進行了更新(Firefox bug 1251198)。MessageEvent.origin屬性值的型別現在是USVString,而不是DOMString,並且MessageEvent.source屬性現在接受一個MessageEventSource值(可以是 WindowProxy、MessagePort或ServiceWorker物件)(Firefox bug 1311324)。- 雙指縮放手勢現已對映到
wheel事件加Ctrl鍵。實現此對映是為了讓開發者能夠在移動螢幕/觸控板上使用雙指縮放手勢實現簡單的縮放功能(滑鼠滾輪 +Ctrl通常用於縮放)(Firefox bug 1052253)。
Selection API
-
Selection API 已經更新,以便在選區移動到編輯宿主內部時,編輯宿主獲得焦點的方式與其他瀏覽器保持一致(Firefox bug 1318312)。更多詳情請參閱 Selection API 在編輯宿主焦點變化方面的行為。
-
SelectionAPI 已更新以匹配一些最新的規範變更(Firefox bug 1359371)collapse()和extend()方法的offset引數現在是可選的。collapse()方法的node引數現在可以為 null。containsNode()方法的partialContainment引數現在是可選的。- 新增了
deleteFromDocument()方法。
-
同樣在
SelectionAPI 中,為實現 Web 相容性以及與 WebKit/Blink 的一致性,添加了Selection.empty()和Selection.setPosition()作為Selection.removeAllRanges()和Selection.collapse()的別名(Firefox bug 1359387)。 -
Storage API 的
StorageManager.persist()和StorageManager.persisted()方法已經實現並暴露給Window上下文(Firefox bug 1286717)。
Worker
- 現在可以為 Worker 和共享 Worker 建立時指定一個標識性的
name屬性。請參閱Worker()和SharedWorker()建構函式,以及DedicatedWorkerGlobalScope和SharedWorkerGlobalScope介面。(Firefox bug 1364297)。 Window.setTimeout()、WorkerGlobalScope.setTimeout()、Window.setInterval()和WorkerGlobalScope.setInterval()現在對後臺標籤頁中的跟蹤指令碼實行最小間隔節流——請參閱跟蹤指令碼的節流(Firefox bug 1355311)。
Service Worker/推送
- 傳送到 Service Worker 上下文的訊息(例如,作為
onmessage的事件物件)現在由MessageEvent物件表示,以與其他 Web 訊息傳遞功能保持一致。 PushManager.subscribe()方法現在接受ArrayBuffer和 Base64 編碼的字串作為applicationServerKey的值(Firefox bug 1337348)。
Web Audio API
- 一個非標準的
AudioContext介面建構函式(它接受一個字串列舉值,指示上下文的使用目的)在提供了options引數時會導致丟擲錯誤。我們已經移除了這個非標準的建構函式。但請注意,Firefox 尚不支援options引數,目前會忽略它(Firefox bug 1361475)。
WebRTC
- 如果源裝置提供立體聲,
getUserMedia()現在預設提供立體聲音訊流;明確請求單聲道輸入的支援將在 Firefox 56 中提供。這目前僅在桌面上有效;移動版 Firefox 當前不支援立體聲音訊輸入源(Firefox bug 971528)。 getUserMedia()的媒體能力、約束和設定中的autoGainControl和noiseSuppression現已與規範匹配;之前它們帶有moz字首(Firefox bug 1366415)。- 當使用空約束集呼叫
getUserMedia()時,之前會錯誤地返回NotSupportedError而不是TypeError。此問題已修復(Firefox bug 1349480)。 - 新增了以下 WebRTC 統計資訊:
framesEncoded、pliCount、nackCount和firCount(Firefox bug 1348657)。 RTCInboundRTPStreamStats字典中原名為mozRtt的欄位已重新命名為roundTripTime以匹配規範;此外,其行為已調整以符合標準:它包含一個雙精度浮點值,該值基於 RTCP 接收方報告中的 RTCP 時間戳估算往返時間,單位為秒(遵循 RFC 3550, section 6.4.1 中描述的演算法)。(Firefox bug 1344970)。但請注意,此屬性即將移動到另一個字典(RTCRemoteInboundRTPStreamStats)(Firefox bug 1380555)。RTCRTPStreamStats字典現在包含firCount、pliCount和nackCount欄位。這些欄位返回可用於確定連線可靠性的底層資訊(Firefox bug 1348657)。RTCOutboundRTPStreamStats字典現在包含framesEncoded欄位,該欄位報告已為該流成功編碼的幀數;利用此資訊,你可以計算幀率(Firefox bug 1348657)。- 在 Android 上,現在有一個首選項可以開啟硬體影片編碼,以提高視訊通話效能並節省電池。此功能將在 Firefox 56 中預設啟用(Firefox bug 1265755)。
Encrypted Media Extensions API
- 儘管規範不允許,但 Firefox 目前允許在不安全的上下文中使用加密媒體擴充套件(Encrypted Media Extensions)。這種情況將在不久的將來改變,從 Firefox 55 開始,當出現這種情況時,會在網路控制檯中輸出棄用警告。(Firefox bug 1361000)。
- 規範強制要求,傳遞給
Navigator.requestMediaKeySystemAccess()的suggestedConfigurations引數中必須至少包含一個MediaKeySystemCapabilities物件,但 Firefox 目前並未強制執行此要求。從 Firefox 55 開始,當指定任何音訊或影片配置但未指定支援的編解碼器時,網路控制檯會輸出警告。不久之後,若未能為音訊和/或影片包含有效配置將丟擲異常(Firefox bug 1368683)。
WebGL
WEBGL_compressed_texture_s3tc_srgb擴充套件現在可用於 WebGL 和 WebGL2 上下文(Firefox bug 1325113)。
安全
- Geolocation API 現在僅在安全上下文中可用(Firefox bug 1072859)。
- Storage API 現在僅在安全上下文中可用(Firefox bug 1268804)。
- 現在允許在 localhost 上載入混合內容(Firefox bug 903966)。
- 遠端 JAR 檔案的載入已再次被停用(Firefox bug 1329336)。
外掛
- Flash 內容現在是“點選以啟用”(Firefox bug 1317856)。這項改動已立即對所有 Nightly 使用者生效,並對 50% 的 beta 使用者生效。對於 Firefox 55 發行版,計劃在釋出後 2 周為 5% 的使用者啟用,釋出後 4 周為 25% 的使用者啟用,釋出後 6 周為 100% 的使用者啟用(Firefox bug 1365714)。
- Flash 和其他外掛不能再從除
http://和https://之外的任何 URL 協議方案載入(Firefox bug 1335475)。
其他
- Linux 上的 Firefox 現在可以使用
-headless標誌以無頭模式執行(參見 Firefox bug 1356681)。
Web 平臺移除的內容
HTML
-
xml:base屬性不能再用於為style屬性中出現的路徑設定基礎 URL,例如 —<div xml:base="https://example.com/" style="background:url(picture.jpg)"></div>(Firefox bug 1350521)。 -
由於沒有其他瀏覽器支援,
<style>元素的scoped屬性在 Firefox 55+ 的內容文件中已被隱藏在一個首選項(layout.css.scoped-style.enabled)之後。 -
Firefox 已移除對
<meta>元素的http-equiv屬性的一個鮮為人知的值MSThemeCompatible的支援。沒有其他現代瀏覽器支援它,並且它導致了相容性問題(Firefox bug 966240)。
CSS
- 專有的
:-moz-bound-element偽類已被移除(Firefox bug 1350147)。 - 專有的
-moz-anchor-decoration值(用於text-decoration-line)已被移除(Firefox bug 1355734)。
API
UIEvent.isChar屬性除 Firefox 外從未被任何瀏覽器支援,並且除了在 macOS 上從未被完全實現。因此,它在 Firefox 55 中被移除,以與其他瀏覽器保持一致。- 專有的 Firefox OS 裝置儲存 API 已從平臺中移除(Firefox bug 1299500)。
- 非標準的
Window.find()方法的aShowDialog引數(可用於在瀏覽器中開啟“查詢”對話方塊)已被移除(Firefox bug 1348409)。 HTMLFormElement.requestAutoComplete()方法已被移除(參見HTMLFormElement)(Firefox bug 1270740)。- 非標準的、Mozilla 特定的 WebRTC offer 選項
mozDontOfferDataChannel和mozBundleOnly已從RTCOfferOptions字典中移除,並且不再被RTCPeerConnection.createOffer()支援(Firefox bug 1196974)。 - 對專有的 Firefox OS
Audio Channels API的支援已從HTMLMediaElement和AudioContext中移除(Firefox bug 1358061)。
SVG
SVGZoomEvent和SVGZoomEvents介面已從 SVG2 規範和 Gecko 中移除,同時移除的還有onzoom <svg>屬性(Firefox bug 1314388)。