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 CSS 或 Stylo)已在 Firefox 57 桌面版中預設啟用,移動版 Firefox 將在稍後跟進。除了效能方面的全面提升之外,開發人員不應注意到任何顯著差異。然而,Stylo 中存在一些細微的功能差異,旨在修復應予消除的非標準 Gecko 行為。我們將在參考頁面和發行說明中酌情報告此類差異(請參閱Quantum CSS 注意事項)。
面向網路開發者的變更
開發者工具
無更改。
HTML
- 日期和時間
<input>型別現已在所有版本中啟用(Firefox bug 1399036)。
CSS
- 現在支援
display-mode媒體查詢的minimal-ui和standalone值(Firefox bug 1369815)。另請參閱 Web 應用清單display欄位。 grid簡寫形式不再重置grid-row-gap和grid-column-gap屬性(Firefox bug 1387410)。layout.css.clip-path-shapes.enabled首選項已被移除(Firefox bug 1399767)。此首選項允許停用clip-path中的<basic-shape>支援。此支援已在 Firefox 54 中釋出,並且不能再被停用。
Quantum CSS 注意事項
以下錯誤已在 Quantum 中修復
- 像
radial-gradient(circle gold,red)這樣的徑向漸變值將在舊的 Gecko 樣式系統中工作,儘管它們不應該工作,因為circle和gold之間缺少逗號(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屬性值設定為normal或none,::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
- 非標準的
for each...in迴圈(最初是 ECMAScript for XML (E4X) 的一部分)已被移除。請改用for...of。(Firefox bug 1083470)。 Object.prototype.watch()和Object.prototype.unwatch()方法已棄用,現在使用時會丟擲警告,並且很快將被移除(Firefox bug 934669)。- 非標準的
Iterator和StopIteration物件以及 舊式迭代協議 已被移除(Firefox bug 1098412)。 - 非同步生成器現在已啟用(Firefox bug 1352312)。
- for await (... of ...) 語法現在已啟用(Firefox bug 1352312)。
API
新 API
PerformanceObserverAPI 現在預設啟用(Firefox bug 1386021)。AbortController和AbortSignal介面(稱為 Abort API)已新增,允許在需要時中止 DOM 請求(例如 fetch 請求)(Firefox bug 1378342)。- [2] Storage API 已實現並預設啟用(Firefox bug 1399038)。
DOM
- Selection API 的
Selection.type屬性現已實現(Firefox bug 1359157)。 Document.createEvent('FocusEvent')現在受支援(Firefox bug 1388069)。HTMLInputElement介面的files屬性現在可設定(Firefox bug 1384030)。HTMLDocument.getSelection()方法已移至Document介面,因此可用於 XML 文件(Firefox bug 718711)。messageerror事件現在已實現,並且可以透過在訊息目標上實現的事件處理程式來響應其觸發而執行程式碼——請參閱MessagePort、DedicatedWorkerGlobalScope、Worker、BroadcastChannel和Window的messageerror事件(Firefox bug 1359017)。- 當
Headers值被迭代時,它們會自動按字典順序排序,並且來自重複標頭名稱的值會被合併(Firefox bug 1396848)。
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)。
外掛
無更改。
其他
- Firefox 無頭模式現在包含一個
-screenshot標誌,允許您直接從命令列獲取網站截圖(Firefox bug 1378010)。
Web 平臺移除的內容
HTML
<link rel="preload">(請參閱 使用 rel="preload" 預載入內容) 已在 Firefox 57 中停用,因為存在各種 Web 相容性問題 (例如,Firefox bug 1405761)。預計將在 Firefox 58 中推出適用於不可快取資源的改進版本。
API
- Mozilla 的專有 Social API 已被完全移除(Firefox bug 1388902)。
SVG
無更改。
面向附加元件和 Mozilla 開發者的變更
注意:從 Firefox 57 開始,所有對基於 XPCOM 的附加元件的支援都已被移除。所有擴充套件都必須轉換為新的 瀏覽器擴充套件(也稱為 WebExtensions),否則它們將無法工作。
WebExtensions
以下 API 已新增或擴充套件
-
- 透過
bookmarks.BookmarkTreeNodeType支援分隔符
- 透過
-
- 用於明暗主題圖示的
theme_icons屬性
- 用於明暗主題圖示的
-
onCreatedonRemovedonUpdatedcontextualIdentities.ContextualIdentity中的colorCode和iconUrl
-
downloads.download()中的incognito選項downloads.DownloadItem中的estimatedEndTime屬性
-
FindProxyForURL()現在可以返回一個物件
-
- Android 上對
runtime.openOptionsPage()的支援
- Android 上對
-
tabs.update()中的loadReplace選項tabs.Tab、tabs.onUpdated和tabs.query()中的discarded屬性tabs.create()可以開啟“view-source:”URLtabs.Tab、tabs.create()、tabs.query()和tabs.update()中的openerTabId屬性
-
colors.toolbarcolors.toolbar_fieldcolors.toolbar_field_textcolors.toolbar_text
-
theme.update()的windowId選項
-
filterResponseData()webRequest事件中的proxyInfo屬性
-
windows.create()中的allowScriptsToClose選項