Firefox 53 開發者版發行說明
Firefox 53 於 2017 年 4 月 19 日釋出。本文列出了對 Web 開發者、Firefox 和 Gecko 開發者以及附加元件開發者都有用的主要更改。
面向網路開發者的變更
開發者工具
- 避免 APZ 提供的熒光筆出現滾動延遲(Firefox bug 1312103)。
- 添加了複製元素完整 CSS 路徑的選項(複製完整 CSS 路徑)(Firefox bug 1323700)。
- DevTools 支援 css-color-4(Firefox bug 1310681)。
- 標記檢視:在摺疊節點的開始標籤和結束標籤之間新增視覺提示(Firefox bug 1323193)。
CSS
新功能
mask-*詳細屬性(參見 CSS 遮罩)均已預設支援和可用(參見 Firefox bug 1251161)。- 添加了
caret-color屬性(Firefox bug 1063162)。 - 實現了
place-items/place-self/place-content簡寫(Firefox bug 1319958)。 - 向
display屬性添加了flow-root值(Firefox bug 1322191)。 -moz-tab-size現在接受<length>值(Firefox bug 943918),並且現在可動畫化(Firefox bug 1308110)。mask-mode:luminance 在漸變遮罩上不起作用(Firefox bug 1346265)。- [css-grid]
grid-template-rows中的 FR 單位未填充視口(Firefox bug 1346699)。 - 如果 flex item 被一個 abspos 兄弟元素隔開,則不按“order”排序(Firefox bug 1345873)。
其他更改
- 在 SVG 元素上啟用 mask longhands(Firefox bug 1319667)。
- [css-grid] 修復:
align-self/justify-self:stretch/normal在<table>網格項上不起作用(Firefox bug 1316051)。 - 修復:
clip-path: circle()在大參考框和百分比半徑下渲染不正確(Firefox bug 1324713)。 - 當對希臘文字應用
text-transform值為uppercase時,離析 eta (ή) 上的重音不再被移除(參見 Firefox bug 1322989)。 display的contents值的可用性曾透過layout.css.display-contents.enabled首選項控制。在 Firefox 53 中,此首選項已完全移除,因此該值將始終可用且無法再停用(Firefox bug 1295788)。
JavaScript
- 已實現
Function.name屬性的 ECMAScript 2015 語義。這包括匿名函式的推斷名稱(var foo = function() {})(Firefox bug 883377)。 - 已實現關閉迭代器的 ECMAScript 2015 語義。這會影響
for...of迴圈等(Firefox bug 1147371)。 - 已實現 模板字面量修訂提案,該提案 取消了對帶標籤模板字面量的轉義序列限制(Firefox bug 1317375)。
- 根據 ES2016,
TypedArray物件的靜態length屬性已從 3 更改為 0(Firefox bug 1317306)。 SharedArrayBuffer現在可以在DataView物件中使用(Firefox bug 1246597)。- 在規範的早期版本中,
SharedArrayBuffer物件在 結構化克隆 期間需要顯式傳輸。在新規範中,它們不再是 可傳輸物件,因此不得在傳輸列表中。新行為過去只顯示控制檯警告,但現在將丟擲錯誤(Firefox bug 1302037)。 ArrayBuffer長度現在限制為Number.MAX_SAFE_INTEGER(>= 2 ** 53)(Firefox bug 1255128)。Error和其他原生錯誤物件原型,如RangeError等,現在是普通物件而不是真正的 Error 物件。(特別是,Object.prototype.toString.call(Error.prototype)現在是"[object Object]"而不是"[object Error]"。)(Firefox bug 1213341)。
事件
- CSS 過渡:已實現
transitionstart、transitionrun和transitioncancel事件(參見 Firefox bug 1264125 和 Firefox bug 1287983)。 - 已實現
CompositionEvent建構函式(參見 Firefox bug 1002256)。 - 已實現
MouseEvent.clientX/MouseEvent.clientY的MouseEvent.x和MouseEvent.y別名(參見 Firefox bug 424390)。 - 已實現
auxclick事件和相應的事件處理程式(參見 Firefox bug 1304044)。 - 在 過渡 取消後,現在會觸發
transitioncancel事件。
DOM
- 連結的
pathname和search屬性(例如<a>和<link>元素的介面)以前返回的是 URL 的錯誤部分。例如,對於 URLhttp://z.com/x?a=true&b=false,pathname會返回"/x?a=true&b=false",search會返回"",而不是"/x"和"?a=true&b=false"。現在已修復此問題(Firefox bug 1310483)。 URLSearchParams()建構函式現在接受字串或字串序列作為初始化物件(Firefox bug 1330678)。- 已實現 Selection API 的
Selection.setBaseAndExtent()方法(參見 Firefox bug 1321623)。 - 已在 Gecko 中實現了
file型別<input>values的 “fakepath” 附加功能,使其與其他瀏覽器保持一致(參見 Firefox bug 1274596)。 - 已實現
Node.getRootNode(),取代已棄用的Node.rootNode屬性(Firefox bug 1269155)。 Plugin和PluginArray物件的自有屬性不再可列舉(Firefox bug 1270366)。MimeTypeArray物件的命名屬性不再可列舉(Firefox bug 1270364)。- 許可權 API 現在有一個新的可用許可權名稱 —
persistent-storage— 用於進行Permissions.query()(參見 Firefox bug 1270038)。這允許源使用持久框(即 持久儲存)進行儲存,根據 儲存 API。 - 已實現
Performance.timeOrigin屬性(Firefox bug 1313420)。
Worker 和 Service Worker
- 網路資訊 API 現在在 worker 中可用(參見 Firefox bug 1323172)。
- 伺服器傳送事件 現在可以在 worker 中使用(參見 Firefox bug 1267903)。
ExtendableEvent.waitUntil()現在可以非同步呼叫(參見 Firefox bug 1263304)。
WebGL
- 已實現
WEBGL_compressed_texture_astcWebGL 擴充套件(Firefox bug 1250077)。 WEBGL_debug_renderer_infoWebGL 擴充套件現在預設啟用(Firefox bug 1336645)。
音訊、影片和媒體
通用
- 從 Firefox 53 for Android 開始,媒體解碼將在程序外處理,以提高多核系統上的效能(Firefox bug 1333323)。
媒體元素
- 用於開始播放任何媒體元素中的媒體的
HTMLMediaElement.play()方法現在返回一個Promise,該 Promise 在播放開始時兌現,如果發生錯誤則拒絕(Firefox bug 1244768)。
Web Audio API
- 已新增
AudioScheduledSourceNode介面,並且AudioBufferSourceNode、ConstantSourceNode和OscillatorNode介面現在都基於它(Firefox bug 1324568)。 - 所有不同的音訊節點型別都已添加了建構函式(Firefox bug 1322883)。
WebRTC
RTCPeerConnection方法createOffer()和createAnswer()現在返回一個Promise,該 Promise 返回一個符合RTCSessionDescriptionInit字典的物件,而不是直接返回RTCSessionDescription。現有程式碼將繼續工作,但新程式碼可以更簡單地編寫。- 類似地,
RTCPeerConnection方法setLocalDescription()和setRemoteDescription()現在接受符合字典RTCSessionDescriptionInit字典的物件作為輸入。現有程式碼繼續工作,但可以簡化。 RTCPeerConnection.addIceCandidate()現在接受一個初始化物件作為輸入。這與現有程式碼相容,但在與上述更改結合使用時,可以稍微更簡單地編寫新程式碼(Firefox bug 1263312)。- 現在預設啟用 DTMF 支援,使用
RTCDTMFSender。有關其工作原理的更多資訊,請參見 將 DTMF 與 WebRTC 結合使用。
HTTP/網路
-
Gecko 現在在
about:config中提供一個首選項,允許使用者設定其預設Referrer-Policy—network.http.referer.userControlPolicy(Firefox bug 1304623)。可能的值為- 0 —
no-referrer - 1 —
same-origin - 2 —
strict-origin-when-cross-origin - 3 —
no-referrer-when-downgrade(預設值)
- 0 —
-
為了支援 應用層協議協商 (ALPN),已移除對下一協議協商 (NPN) 的支援 — 參見 Firefox bug 1248198。
-
Large-AllocationHTTP 標頭現在預設可用,不再隱藏在首選項後面(Firefox bug 1331083)。
SVG
- 部分實現了
SVGGeometryElement介面(Firefox bug 1239100)。
Web 平臺移除的內容
HTML/XML
dom.details_element.enabled首選項 — 用於控制在 Firefox 中啟用/停用<details>和<summary>元素支援 — 已從about:config中移除。這些元素(最初在 Firefox 49 中預設啟用)無法再停用。參見 Firefox bug 1271549。<iframe>元素/HTMLIFrameElement介面的mozapp屬性已移除 — 此屬性曾用於在以 mozilla 為字首的瀏覽器 API<iframe>中嵌入 Firefox OS 應用(Firefox bug 1310845)。- 已移除
HTMLIFrameElement.setInputMethodActive()方法和InputMethod介面(用於在 Firefox OS 應用上設定和管理 IME)(Firefox bug 1313169)。
CSS
- 已移除
:dir()偽類的-moz字首變體(Firefox bug 1270406)。 - 已移除
text-align-last的-moz字首版本(Firefox bug 1276808)。 - 已移除
calc()方法的-moz字首變體(Firefox bug 1331296)。 - 已移除專有的
-moz-samplesize媒體片段(為方便向低記憶體 Firefox OS 裝置提供降取樣影像而新增;參見 Firefox bug 854795)(Firefox bug 1311246)。
JavaScript
- 已移除非標準的
ArrayBuffer.slice()方法(但保留了標準化版本ArrayBuffer.prototype.slice(),參見 Firefox bug 1313112)。
API
- 已從平臺中移除 Wi-Fi 資訊 API、揚聲器管理器 API、網路共享 API 和設定 API(分別參見 Firefox bug 1313788、Firefox bug 1317853、Firefox bug 1313789 和 Firefox bug 1313155)。
其他
- 已從
HTMLEmbedElement和HTMLObjectElement介面中移除legacycaller(Firefox bug 909656)。
面向附加元件和 Mozilla 開發者的變更
WebExtensions
新 API
增強型 API
storage.synccontextMenus中的page_action、browser_action、password、tab上下文型別webRequest.onBeforeRequest現在支援requestBodytabs.insertCSS現在支援cssOrigin,使您能夠插入使用者樣式表。
JavaScript 程式碼模組
- 非同步 AddonManager API 現在支援
Promises以及回撥(Firefox bug 987512)。