Firefox 52 開發者釋出說明
Firefox 52 於 2017 年 3 月 7 日釋出。本文列出了對 Web 開發者、Firefox 和 Gecko 開發者以及附加元件開發者都有用的主要更改。
面向網路開發者的變更
開發者工具
HTML
- 已實現
rel="noopener"連結型別(參見 Firefox bug 1222516)。
CSS
新功能
-
添加了
:focus-within偽類(Firefox bug 1176997)。 -
在
<button>元素中添加了對display:flex/grid和列集佈局的支援(Firefox bug 984869)。 -
實現了數字顏色與
currentColor之間的插值(Firefox bug 1299741)。 -
實現了
和justify-content: space-evenly的 Flexbox 佈局(Firefox bug 1235922)。align-content: space-evenly -
在 CSS
mask/clip-path中添加了對亞畫素抗鋸齒的支援(Firefox bug 1305259)。 -
實現了 CSS Text 3 段落分隔轉換規則(Firefox bug 1081858)。
-
基本形狀剪裁(透過
clip-path屬性應用)現在可以應用於 SVG 內容(Firefox bug 1246741)。 -
實現了
align-self和justify-self的 Flexbox 佈局(Firefox bug 1221524)。 -
touch-action屬性現在在所有平臺上預設啟用。(完整的故事請參閱 發貨意向郵件 #1 和 發貨意向郵件 #2。) -
Flexbox
align-content處理和單行尺寸應取決於flex-wrap,而不是行數(Firefox bug 1090031)。 -
CSS 動畫現在可用於動畫非插值屬性(參見 Firefox bug 1064937)。
-
將
baseline|last-baseline更改為[ first | last ]? baseline(Firefox bug 1313254)。 -
left/right的使用值對於塊軸是start(Firefox bug 1221565)。 -
使用不確定包含塊長度拉伸柔性軌道現在遵循最小/最大尺寸(Firefox bug 1309407)。
-
mask-position和mask-repeat的初始值已分別更改為0% 0%和repeat(Firefox bug 1308963)。 -
CSS
<color>值發生了一些變化(參見 Firefox bug 1295456)rgba()和hsla()現在已被重新定義為rgb()和hsl()的別名;兩者都接受相同的引數語法。rgb()和hsl()現在接受可選的 alpha 值,例如rgb(255, 0, 0, 0.5)。- 顏色函式現在接受空格分隔的引數而不是逗號,例如
rgb(255 0 0 / 0.5)。 - Alpha 值現在可以指定為百分比以及數字,例如
rgb(255 0 0 / 50%)。 hsl()顏色中的色相分量現在可以指定為角度以及數字,例如hsl(120deg, 60%, 70%)。
-
Firefox 對子索引偽類(如
:nth-child、:first-child等)的實現已更新以匹配 CSS 選擇器級別 4 規範:這些偽類現在匹配適當的兄弟元素,而不是其父元素的子元素。這允許在沒有父元素或父元素不是Element時使用這些偽類(Firefox bug 1300374)。
CSS 網格
- 已實現 CSS 網格。
更改和移除
- 未加字首的多列屬性(並暫時重新添加了
-moz字首版本作為別名)(Firefox bug 1300895)。 - 停止將 flex 容器的絕對定位子元素封裝在匿名 flex 專案中(Firefox bug 1269045)。
- 實現了網格容器基線(Firefox bug 1151204)。
- 從樣式系統中移除了
<flex>最小尺寸(Firefox bug 1305244)。 - 移除了偏好設定
layout.css.masking.enabled(Firefox bug 1308239)。 - 專有的
-moz-images-in-menus和-moz-images-in-buttons媒體型別已被移除(參見 Firefox bug 1302157)。 - 從顏色屬性中移除了
-moz-use-text-color值;請改用currentColor(Firefox bug 1306214)。 - [css-grid] 網格項上設定的 'max-width' 導致文字溢位(Firefox bug 1330380)。
JavaScript
新功能
- 已新增對非同步函式的支援。這包括
async function宣告、async function表示式以及await關鍵字(Firefox bug 1185106)。 - 在函式中實現了 ES2017 尾隨逗號(Firefox bug 1303788)。
- 實現了 剩餘引數 解構(Firefox bug 1243717)。
- 冪運算子 (
**) 現在預設啟用(Firefox bug 1291212)。 - 您現在可以在日期相關 API(如
DateTimeFormat或Date.toLocaleString())的timeZone選項中使用 IANA 時區名稱(Firefox bug 837961)。
更改和移除
- 當在 陣列解構 中使用解構剩餘引數並帶有尾隨逗號時,現在會丟擲
SyntaxError(Firefox bug 1041341)。 - 物件解構 中現在允許重複的
__proto__屬性(Firefox bug 1204024)。 Array.prototype.toLocaleString()已重新實現以支援 Intl API 引數locales和options(Firefox bug 1130636)。TypedArray建構函式現在接受 可迭代物件 來建立新的型別化陣列(Firefox bug 1232266)。TypedArray.from()、TypedArray.of()、TypedArray.prototype.filter()、TypedArray.prototype.map()、TypedArray.prototype.slice()、TypedArray.prototype.subarray()現在要求它們的this值是有效的型別化陣列建構函式(Firefox bug 1122396)。- 非標準
ArrayBuffer.slice()方法(不是ArrayBuffer.prototype.slice())已棄用,現在使用時會發出警告(Firefox bug 1316913)。 - Unicode 碼點轉義現在也可以用作識別符號(例如,
let \u{61} = 123,參見 Firefox bug 1314037)。 - 為符合 ES2015 規範,
\u2e2f和ⸯ現在用作識別符號時會丟擲錯誤,詳情請參閱 Firefox bug 917436 和 Firefox bug 1197230。
WebAssembly
- Gecko 中已新增對 WebAssembly 的支援。
DOM
- 已完全釋出 Selection API,包括新的
selectstart和selectionchange事件(Firefox bug 1309612)。 - 現在支援屬性
Event.composed;此布林值指示事件是否可以透過 Shadow Root 冒泡到標準 DOM 中(Firefox bug 1292063)。 - 只有 HTML 元素以及
<svg>和<math>元素才能透過呼叫Element.requestFullscreen()進入全屏模式(Firefox bug 1305928)。 - 觸控事件已在 Windows 桌面平臺上重新啟用 — 參見 Firefox bug 1244402。(它們在 Firefox 24 中被停用,因為它們破壞了許多主要站點;參見 Firefox bug 888304。)
- 已實現
focusin和focusout事件(Firefox bug 687787)。 - 已實現
WorkerGlobalScope.isSecureContext屬性(參見 Firefox bug 1269052)。 - Web App Manifest 安裝事件已重新命名為
appinstalled,以避免與 Service Worker 安裝事件(參見oninstall)混淆。有關此更新的更多詳細資訊,請參見 Firefox bug 1309099。 - 拖放 API 的
DataTransfer.types屬性現在返回一個字串凍結陣列,而不是DOMStringList(參見 Firefox bug 1298243)。 loadstart和loadend事件現在在<img>元素上觸發(參見 Firefox bug 1264769)。- 已實現 通知 API 的
Notification.requireInteraction(參見 Firefox bug 862395)。 Window.open()方法現在有一個noopener視窗特性可用(參見 Firefox bug 1267339),它反映了rel="noopener"連結型別的功能。- 已實現 Web Components API 的
CustomElementRegistry.get()方法(參見 Firefox bug 1275838)。 - 指標事件
width和height屬性現在預設為 1(參見 Firefox bug 1304315)。 - 檔案和目錄條目 API 已更新以包含 最新規範 中的更改(有關確切詳細資訊,請參見 Firefox bug 1284987)。
cancelBubble屬性以前在UIEvent上定義,現在改為在Event介面上定義。有關更多詳細資訊,請參見 Firefox bug 1298970。
更改和移除
- 處理電話呼叫的 Firefox OS API(Contacts、MobileConnection、Icc 等)已被移除(Firefox bug 1311206)。
- Firefox OS
Identity介面已被移除(Firefox bug 1309030)。 - Firefox OS 語音郵件 API(
MozVoicemail、MozVoicemailEvent、MozVoicemailStatus、Navigator.mozVoicemail)已被移除(Firefox bug 1309723)。 - Firefox OS 蜂窩廣播 API(
MozCellBroadcast、MozCellBroadcastEvent、MozCellBroadcastMessage、Navigator.mozCellBroadcast)已被移除(Firefox bug 1306772)。 - Firefox OS 電視廣播相關 API 已被移除(Firefox bug 1306778)。
- Firefox OS FM 廣播 API(
FMRadio、Navigator.mozFMRadio)已被移除(Firefox bug 1306779)。
Service Workers 和 Fetch
Headers.getAll()方法已被移除,Headers.get()現在檢索指定標頭的所有值,而不僅僅是第一個值(參見 Firefox bug 1278275)。這符合最新的 Fetch API 規範更新。
Web Audio API
- 已新增
ConstantSourceNode介面;它表示一個始終輸出所有樣本值相同的音訊流的音訊源。有關此如何用於簡化某些複雜音訊流的示例,請參見 使用 ConstantSourceNode 控制多個引數。
WebRTC
- 當 ICE 連線暫時中斷時,
RTCPeerConnection.iceConnectionState屬性現在設定為"disconnected";這表示可能很快自行解決的暫時性故障,之後連線會恢復到"connected"狀態(Firefox bug 852665)。 MediaDevicesdevicechange事件及其對應的處理程式在 Firefox 51 中僅在 Mac 上實現但預設停用,現在已在 Windows 和 Linux 上實現,並在所有平臺上預設啟用。- 現在支援
MediaStream.active屬性。此只讀布林屬性指示流上是否至少有一個軌道正在播放。 - 在 Firefox 52 之前,
MediaStreamTrack.stop()方法只能停止本地軌道(即透過getUserMedia()獲取的軌道)。現在可以停止各種軌道,包括與 WebRTC 連線、Web Audio API 流或CanvasCaptureMediaStream關聯的MediaStream上的軌道。 - 以前,在 Firefox 事件迴圈的單次傳遞中重複更改
TextTrack的mode會導致多個change事件傳遞到父媒體元素的textTracks屬性指定的TextTrackList。現在這些更改合併到一個事件中(Firefox bug 882674)。
音訊/影片/媒體
- 當處理
<audio>或<video>元素時發生錯誤,HTMLMediaElement.error中指定的MediaError物件現在包含一個message屬性,它提供了所發生錯誤的具體描述。此字串提供了有關此確切錯誤發生情況的詳細資訊,揭示了出錯的原因(Firefox bug 1299072)。此欄位自 Firefox 51 以來的 Firefox 夜間構建中已包含,但現在在所有構建中都可用,包括髮布版本。
其他 API
- 已移除
FileSystemFileEntry.createWriter()方法,該方法在 Firefox 50 中新增(但始終返回錯誤)(Firefox bug 1315185)。 - 專有的 Firefox OS
Apps installation/management APIs已從平臺中移除(參見 Firefox bug 1261019)。 - 專有的 Firefox OS
Web Telephony API已從平臺中移除(參見 Firefox bug 1309719)。 - 專有的 Firefox OS
Web Bluetooth API已從平臺中移除(參見 Firefox bug 1310020)。 - 電池狀態 API 現在僅適用於 chrome/特權程式碼(參見 Firefox bug 1313580)。
ImageBitmapRenderingContext.transferImageBitmap()已重新命名為ImageBitmapRenderingContext.transferFromImageBitmap()(參見 Firefox bug 1304767)。mozDash和mozDashOffset成員已從CanvasRenderingContext2D中移除(參見 Firefox bug 931389)。
HTTP
Referrer-Policy標頭現在支援指令same-origin、strict-origin和strict-origin-when-cross-origin(Firefox bug 1276836)。Content-Security-Policy指令(例如script-src)現在支援'strict-dynamic'源表示式(Firefox bug 1299483)。- 根據 Strict Secure Cookies 規範,不安全的站點 (
http:) 不能再設定帶有 "secure" 指令的 cookie(Firefox bug 976073)。 - HTTP/2 標頭壓縮格式 HPACK 的最大表格大小已從 4 KB 增加到 64 KB(Firefox bug 1296280)。
- 已新增
Large-Allocation標頭(Firefox bug 1304140)。
SVG
- SVG 文件現在使用
XMLDocument介面而不是 SVGDocument 來表示。這是 SVG 2 規範中的一項更改。
安全
- 當登入頁面(即包含
<input type="password">欄位的頁面)以不安全的方式提交時,Firefox 會在密碼欄位下方顯示一個上下文警告訊息以提醒使用者(Firefox bug 1319119)。自動填充也在不安全的登入表單上停用(Firefox bug 1217152)。有關更多詳細資訊,請參見 不安全的密碼。 - 已移除對 SHA-1 SSL 證書的支援;導航到使用 SHA-1 證書的安全頁面現在將導致
Untrusted Connection錯誤(Firefox bug 1330043)。
外掛
除了 Flash 之外的所有 NPAPI 外掛支援都已刪除。Flash 的使用也將在未來逐步淘汰。
面向附加元件和 Mozilla 開發者的變更
WebExtensions
新 API
sessionsAPItopSitesAPIomniboxAPIruntime.onInstalled和runtime.onStartup事件- webRequest 中的非同步事件監聽器
bookmarks.onMoved、bookmarks.onCreated、bookmarks.onChanged事件- 命令清單鍵中的
_execute_browser_action和_execute_page_action - content_scripts 清單鍵中的
match_about_blank
介面
- 已新增
nsIDroppedLinkHandler.dropLinks方法和nsIDroppedLinkItem介面以處理拖放多個專案(Firefox bug 92737)。
XUL
- 已新增
tabbrowser.loadTabs(uris, params)方法過載(Firefox bug 92737)。 browser.droppedLinkHandler函式簽名已更改(Firefox bug 92737)。