Firefox 57 (Quantum) 開發者版

本文件提供了 Firefox 57 (又名 Firefox Quantum) 中影響開發人員的變更資訊。Firefox 57 已於 2017 年 11 月 14 日釋出。

Firefox 57 === Firefox Quantum

Firefox 57 的釋出名稱被定為 Quantum,源於旨在從底層重建 Firefox 的 Firefox Quantum 工程專案,它帶來了重大的效能、穩定性和視覺改進。這是 Firefox 第一個搭載這些改進的版本,因此我們希望藉此機會加以宣傳。

注意:要了解此版本中 Quantum 功能的更多資訊,請參閱 Dan Callahan 撰寫的Firefox Quantum 開發者版:史上最快的 Firefox,搭載 Photon UI 和更最佳化的工具

Firefox 的全新並行 CSS 引擎(也稱為 Quantum CSSStylo)已在 Firefox 57 桌面版中預設啟用,移動版 Firefox 將在稍後跟進。除了效能方面的全面提升之外,開發人員不應注意到任何顯著差異。然而,Stylo 中存在一些細微的功能差異,旨在修復應予消除的非標準 Gecko 行為。我們將在參考頁面和發行說明中酌情報告此類差異(請參閱Quantum CSS 注意事項)。

面向網路開發者的變更

開發者工具

無更改。

HTML

CSS

Quantum CSS 注意事項

以下錯誤已在 Quantum 中修復

  • radial-gradient(circle gold,red) 這樣的徑向漸變值將在舊的 Gecko 樣式系統中工作,儘管它們不應該工作,因為 circlegold 之間缺少逗號(Firefox bug 1383323)。
  • 當您將螢幕外元素動畫到螢幕上但指定了延遲時,Gecko 不會在某些平臺(例如 Windows)上重新繪製(Firefox bug 1383239)。
  • 在 Gecko 中,如果 <details> 元素上存在活動的 animation,則無法使用 open 屬性將其預設設定為開啟(Firefox bug 1382124)。
  • 在 Gecko 中,當從指定了顏色的 text-shadow 過渡到未指定顏色的 text-shadow 時,transitions 將不起作用(Firefox bug 726550)。
  • 在 Gecko 中,取消一個填充動畫(例如,設定了 animation-fill-mode: forwards 的動畫)可以觸發在同一元素上設定的過渡,儘管只觸發一次(有關更多資訊,請參閱 Firefox bug 1192592這些測試用例)。一般來說,宣告式動畫不應觸發過渡。
  • 在 Gecko 中,使用 em 單位的動畫不受動畫元素的父級 font-size 變化的影響,但它們應該受到影響(Firefox bug 1254424)。
  • Gecko 處理 font-size 繼承的方式也與 Quantum CSS 不同,這意味著對於某些語言設定,繼承的字型大小最終會比預期小(請參閱 Firefox bug 1391341)。
  • Gecko 在解析 @-moz-document 規則的 domain()url-prefix() URL 匹配函式時,重用了用於解析 url-token 的相同機制。Quantum CSS 不使用相同的機制,並且當 token 包含括號或引號時,它不認為 token 無效(Firefox bug 1362333)。
  • 在 Gecko 中,當您將系統字型設定為 canvas 2D 上下文的 font 值(例如 menu)時,獲取字型值無法返回預期的字型(它返回空)。這已在 Quantum 中修復。(Firefox bug 1374885)。
  • 在 Gecko 中,當您建立一個分離的子樹(例如,使用 createElement() 建立但尚未插入 DOM 的 <div>)時,子樹的根元素被設定為塊級元素。在 Quantum CSS 中,這被設定為內聯元素,符合規範(Firefox bug 1374994)。
  • 在 Gecko 中,當 calc() 表示式用作 radial-gradient() 函式的半徑分量時,它們會被拒絕,導致該值無效(Firefox bug 1376019)。
  • 在 Gecko 中,calc(1*2*3) 未能成功解析;Quantum CSS 修復了此問題(Firefox bug 1379467)。
  • 在 Quantum CSS 中,calc() 在規範中所有解釋應支援的地方都得到了支援Firefox bug 1350857)。在 Gecko 中則不支援。
  • Gecko 存在一個 bug,即即使 content 屬性值設定為 normalnone::before::after 偽元素仍然會生成。根據規範,它們不應該生成(Firefox bug 1387931)。
  • 另一個 Gecko bug 意味著 background-position 屬性無法在包含不同數量的 <position> 值之間進行過渡,例如 background-position: 10px 10px;background-position: 20px 20px, 30px 30px;(請參閱 Firefox bug 1390446)。

SVG

無更改。

JavaScript

API

新 API

DOM

DOM 事件

無更改。

媒體和 WebRTC

  • RTCDataChannel 現在支援任意大小(最高 1GiB,儘管 256kiB 更具互操作性)的訊息,透過在 SCTP 訊息上使用記錄結束(EOR)標誌。有關更多資訊,請參閱理解訊息大小限制Firefox bug 979417)。

    注意:由於 Firefox 尚未支援 SCTP 流排程器和使用者訊息交錯協議,該協議提供了交錯來自多個源的 SCTP 訊息的能力,傳送大資料物件可能會導致所有其他 SCTP 流量嚴重延遲。請參閱 Firefox bug 1381145 以跟蹤在 Firefox 中實現和部署流排程器支援的進展。

  • 如果嘗試傳送的訊息大小與接收方的使用者代理不相容,RTCDataChannel.send() 方法現在可以丟擲 TypeError 異常(這是 Firefox bug 979417 的一部分實現)。

  • MediaStream Recording API 已更新,用於報告錄製過程中發生問題的 error 事件現在是 MediaRecorderErrorEvent 型別,而不是通用事件。

  • 更新了 OfflineAudioContext 的文件,因為其建構函式輸入現在可以透過物件而不是引數列表來指定(Firefox bug 1388591)。

  • Web Audio API 現在正確支援多聲道輸出(Firefox bug 1378070)。

安全

  • resource:// URL 不再洩露資訊(Firefox bug 863246
  • Data URL 現在被視為唯一的非透明源,而不是繼承負責導航的設定物件的源(Firefox bug 1324406)。

外掛

無更改。

其他

Web 平臺移除的內容

HTML

API

SVG

無更改。

面向附加元件和 Mozilla 開發者的變更

注意:從 Firefox 57 開始,所有對基於 XPCOM 的附加元件的支援都已被移除。所有擴充套件都必須轉換為新的 瀏覽器擴充套件(也稱為 WebExtensions),否則它們將無法工作。

WebExtensions

以下 API 已新增或擴充套件