Firefox 49 開發者版本釋出說明
要測試 Firefox 最新的開發者功能,請安裝 Firefox Developer Edition。 Firefox 49 於 2016 年 9 月 20 日釋出。本文列出了對網路開發者、Firefox 和 Gecko 開發者以及附加元件開發者都有用的主要變化。
面向網路開發者的變更
開發者工具
-
現在,控制檯中記錄的 JavaScript 錯誤會提供一個“[瞭解更多]”連結,以獲取更多除錯幫助 (Firefox bug 1179876)。
-
CSS 自動補全:在自動補全彈出視窗中顯示更多建議 (Firefox bug 1260419)。
-
動畫檢查器現在在開發者工具中公開動畫效能資訊 (Firefox bug 1254408)。
-
檢查器的上下文選單已重新組織,使其更整潔、更易於使用 (Firefox bug 1211613)。
-
檢查器現在支援顏色值的
#RRGGBBAA和#RGBA語法 (Firefox bug 1271191)。 -
開發者工具不再將自閉合標籤(例如
<br>和<img>)顯示為在 HTML 頁面上具有閉合標籤;對於 XHTML 頁面,行為保持不變 (Firefox bug 820926)。 -
無障礙功能改進!
- 工具箱在確保鍵盤焦點更可見方面做得更好 (Firefox bug 1242851)。
- 已為無標籤控制元件新增無障礙標籤 (Firefox bug 1242715)。
- 為檢查器的標記檢視添加了正確的樹檢視語義和鍵盤導航 (Firefox bug 1242694)。
-
網路監視器現在顯示一個“原因”列,該列指示導致每個特定網路請求的原因 (Firefox bug 1134073)。
-
在 about:debugging 附加元件頁面中,“重新載入”按鈕僅對臨時附加元件啟用。它將對所有其他附加元件停用 (Firefox bug 1273184)。
-
在 about:debugging Workers 頁面中,如果服務工作執行緒與當前瀏覽器配置不相容,則將在“服務工作執行緒”部分顯示警告訊息 (Firefox bug 1266415)。
-
about:debugging 現在有一個新的“標籤頁”頁面可用,它提供當前 Firefox 例項中所有可除錯標籤頁的完整列表 (Firefox bug 1266128)。
-
工具箱高階設定中的“停用快取”選項已重新命名為“停用 HTTP 快取”,以明確這會影響 HTTP 快取,而不是服務工作執行緒/ 快取 API (bug(1253018))。
-
現在,儲存檢查器允許透過其自己的上下文選單刪除 IndexedDB 資料庫 (Firefox bug 1205123),並且如果由於某種原因無法刪除 IndexedDB(例如,如果仍有活動連線),它將顯示警告訊息 (Firefox bug 1268460)。
HTML
- 添加了對
<details>和<summary>元素的支援 (Firefox bug 1226455)。 <input>元素的pattern屬性現在在底層 JavaScriptRegExp中使用'u'引數 (Firefox bug 1227906)。- 為了匹配規範更改,
<track>元素的kind屬性的無效值現在被視為"metadata"而不是"subtitles"(Firefox bug 1269712)。 <iframe>元素的sandbox屬性現在支援'allow-popups-to-escape-sandbox'和'allow-modals'值 (Firefox bug 1190641)。- 已刪除對微資料屬性和微資料 API 的支援 (Firefox bug 909633)。
<a>元素上的referrerpolicy屬性現在支援'no-referrer-when-downgrade'和'origin-when-cross-origin'(Firefox bug 1178337)。- 已刪除
<label>元素的form內容屬性。HTMLLabelElement.form屬性仍然存在,但現在返回與標籤控制元件關聯的表單(如果存在控制元件且該控制元件與表單關聯) (Firefox bug 1268852)。
CSS
-
添加了
background-position-x和background-position-y,它們允許單獨指定繪製背景影像的水平和垂直偏移量;它們是background-position的組成部分 (Firefox bug 550426)。 -
添加了對
background-repeat的round和space關鍵字的支援 (Firefox bug 548372)。 -
在
background-clip上,關鍵字text現已預設啟用 (Firefox bug 1264905)。 -
添加了對使用 4 位和 8 位 CSS 十六進位制顏色值 (#RRGGBBAA 和 #RGBA) 指定帶 alpha 通道顏色值 (Firefox bug 567283) 的支援。
-
偽類
:dir已取消字首 (Firefox bug 859301)。 -
在我們的實驗性實現(尚未預設啟用)中,
clip-path現在可以在<basic-shape>值之間進行插值 (Firefox bug 1110460)。 -
添加了
q長度單位 (Firefox bug 1274526)。 -
屬性
text-align-last已取消字首 (Firefox bug 1039541)。 -
添加了對
overflow-wrap的支援,替換了仍然作為替代名稱受支援的word-wrap(Firefox bug 955857)。 -
我們的實驗性 CSS 網格實現已得到改進
- 為
grid-gap、grid-row-gap和grid-column-gap屬性實現了<percentage>(Firefox bug 1266268)。 - 為
align-self、justify-self值baseline和last-baseline(又稱“基線自對齊”)實現了網格佈局支援 (Firefox bug 1221525)。 - 實現了網格項基線內容對齊 (Firefox bug 1256429)。
- 為
-
我們的實驗性 CSS 遮罩實現已得到改進
mask-origin屬性現在使用border-box而不是padding-box作為初始值,以匹配規範 (Firefox bug 1258286)。mask-repeat屬性現在支援space和round值 (Firefox bug 1258626)。- 修復了阻止
mask-position屬性動畫的問題 (Firefox bug 1273804)。
-
控制
text-emphasis的首選項已被移除,因此無法再停用對該屬性的支援 (Firefox bug 1229609)。
JavaScript
- 已實現 ES2015
getPrototypeOf()和setPrototypeOf()Proxy陷阱 (Firefox bug 888969)。 - ES2015
RegExp.prototype[Symbol.match]()、RegExp.prototype[Symbol.replace]()、RegExp.prototype[Symbol.search]()和RegExp.prototype[Symbol.split]()方法以及RegExp[Symbol.species]getter 已實現 (Firefox bug 887016)。 - 已刪除
String.prototype.match/search/replace的已棄用非標準flags引數 (Firefox bug 1108382)。 Date.parse()方法在解析兩位數年份時的行為已更改,以更好地與 Google Chrome 瀏覽器互操作 (Firefox bug 1265136)。
介面/API/DOM
DOM 和 HTML DOM
- 已新增方法
DOMTokenList.supports()(Firefox bug 1257849)。 - 已新增
DOMTokenList.replace()方法 (Firefox bug 1224186)。 URLSearchParams()建構函式的引數中,前導'?'字元現在被忽略 (Firefox bug 1268361)。- 對於使用
blob:方案的 URL,URL.origin、HTMLAnchorElement.origin和HTMLAreaElement.origin返回的值不再錯誤地為null,而是透過移除前導blob:形成的 URL 的源 (Firefox bug 1270451)。 - 在預渲染模式下,
Document.visibilityState屬性現在返回'prerender'(Firefox bug 1069772)。 - 已實現
Window.isSecureContext屬性 (Firefox bug 1162772)。 - DOM4
Element.before、Element.after、Element.replaceWith、Element.append和Element.prepend方法已實現 (Firefox bug 911477)。 TouchList.identifiedTouch()方法已被移除 (Firefox bug 1188539)。- 預設情況下,在呼叫
Window.open()時,scrollbarsWindow功能是啟用的。過去,雖然強烈建議啟用它,但它不是預設設定 (Firefox bug 1257887)。 - 添加了實驗性和非標準的
HTMLMediaElement.seekToNextFrame()方法,該方法允許逐幀查詢影片內容 (Firefox bug 1235301)。雖然鼓勵您嘗試此方法以幫助我們瞭解其有用性,但請勿在生產程式碼中使用它! HTMLLabelElement.form屬性現在返回與標籤控制元件關聯的表單,如果存在控制元件(並且該控制元件與表單關聯)。以前,標籤是使用此屬性直接與表單關聯的 (Firefox bug 1268852)。- 已新增對
EventTarget.addEventListener()的第三個引數的支援,該引數可以是Boolean或EventListenerOptions(Firefox bug 1266164 和 Firefox bug 1266066)。 KeyboardEvent.key的音訊音量相關值已重新命名。"VolumeDown"現在是"AudioVolumeDown","VolumeUp"現在是"AudioVolumeUp","VolumeMute"現在是"AudioVolumeMute"。這使 Firefox 與 UI 事件規範的最新草案保持一致 (Firefox bug 1272578)。有關可用鍵程式碼的完整列表,請參閱鍵盤事件的程式碼值。- 以前稱為
"MozHomeScreen"、"MozCameraFocusAdjust"和"MozPhoneCall"的鍵現在在 UI Events 規範中具有官方名稱:"GoHome"、"CameraFocus"和"Call"。Firefox 49 已更新以使用新名稱 (Firefox bug 1272599)。有關可用鍵程式碼的完整列表,請參閱鍵盤事件的程式碼值。 - 已刪除鍵值
"Separator"和"MediaSkip",因為它們已棄用且未使用 (Firefox bug 1232919)。 - 已新增鍵值和相應的鍵程式碼
"Hyper"和"Super",以表示這些舊版修飾鍵 (Firefox bug 1232919)。 - 已新增兩個多媒體數字鍵盤鍵的鍵值:
"Key11"和"Key12"(Firefox bug 1232919)。 - 已為以下音訊控制鍵添加了新的鍵值:
"AudioBassBoostToggle"、"AudioTrebleDown"和"AudioTrebleUp"(Firefox bug 123919)。 - 已為這些麥克風控制鍵添加了鍵值:
MicrophoneToggle、MicrophoneVolumeDown、MicrophoneVolumeUp和MicrophoneVolumeMute(Firefox bug 123919)。 - 已新增新的鍵值以支援語音識別裝置:
SpeechCorrectionList和SpeechInputToggle(Firefox bug 1232919)。 - 已新增新的鍵值以支援手機上的特殊按鈕:
AppSwitch、Call、CameraFocus、EndCall、GoBack、GoHome、HeadsetHook、LastNumberRedial、Notification、MannerMode和VoiceDial(Firefox bug 1232919)。 - 已新增以下新的應用程式鍵值:
LaunchContacts和LaunchPhone(Firefox bug 1232919)。 - 已新增新的鍵值以支援電視裝置:
TV3DMode、TVAntennaCable、TVAudioDescription、TVAudioDescriptionMixDown、TVAudioDescriptionMixUp、TVContentsMenu、TVDataService、TVInput、TVInputComponent1、TVInputComponent2、TVInputComposite1、TVInputComposite2、TVInputHDMI1、TVInputHDMI2、TVInputHDMI3、TVInputHDMI4、TVInputVGA1、TVMediaContext、TVNetwork、TVNumberEntry、TVRadioService、TVSatellite、TVSatelliteBS、TVSatelliteCS、TVSatelliteToggle、TVTerrestrialAnalog、TVTerrestrialDigital、TVTimer和DVR(Firefox bug 1232919)。 - 鍵值
MediaSelect已替換為標準鍵值LaunchMediaPlayer(Firefox bug 1272592)。 - 還添加了其他媒體播放器鍵值。它們是
MediaAudioTrack、MediaSkipBackward、MediaSkipForward、MediaStepBackward、MediaStepForward、MediaTopMenu、NavigateIn、NavigateNext、NavigateOut和NavigatePrevious(Firefox bug 1232919)。
Canvas
CanvasRenderingContext2D.filter屬性(提供向畫布新增過濾器的支援)現在預設啟用,不再需要透過首選項啟用 (Firefox bug 1173545)。
WebGL
- 已實現
EXT_color_buffer_floatWebGL 2 擴充套件 (Firefox bug 1129332)。 - 已實現
webglcontextcreationerror事件,該事件在 WebGL 上下文建立嘗試失敗時傳送 (Firefox bug 1271478)。使用此事件有助於瞭解問題所在,無論是用於除錯還是生產錯誤處理。
IndexedDB
- 您現在可以重新命名 IndexedDB 索引;
IDBIndex.name屬性不再是隻讀的 (Firefox bug 1118028)。 - 您現在也可以重新命名
IDBObjectStore;IDBObjectStore.name屬性不再是隻讀的 (Firefox bug 1118028)。
Service Workers 及相關
- Fetch API 的
Response物件現在實現了redirected屬性,該屬性指示響應是否用於已重定向的請求。在使用此屬性之前,請檢視文件中與安全性相關的注意事項 (Firefox bug 1243792)。 - 在 Permissions API 中,Firefox 不再支援“push”
PermissionDescriptor字典型別(在規範中稱為PushPermissionDescriptor);這是因為 Firefox 依賴配額系統來控制userVisibleOnly狀態,並且在遇到PushPermissionDescriptor例項時會丟擲錯誤 (Firefox bug 1266821)。刪除此字典後,Firefox 現在將忽略它。
媒體流
- 過去,在使用者僅擁有音訊和影片兩種硬體型別中的一種時,請求同時包含音訊和影片的
MediaDevices.getUserMedia()呼叫可能會成功。此問題已修復 (Firefox bug 802326)。 - 在 Firefox 早期版本中,請求同時包含音訊和影片的
MediaDevices.getUserMedia()呼叫可能會成功,即使使用者拒絕了其中一個(但不是全部)匹配裝置的訪問。此問題已修復 (Firefox bug 802326)。這還涉及使用者介面的一些細微更改,以便在提示使用者許可權時移除選擇“無音訊”或“無影片”的選項。 - 已實現
MediaStream.getTrackById()方法 (Firefox bug 1208390)。
WebRTC
RTCPeerConnection.addTrack()方法已更新,允許將不屬於指定流元件的軌道新增到連線中。相反,流用於在連線的接收端對軌道進行分組 (Firefox bug 1271669)。
新 API
PerformanceObserverAPI 現已在 Nightly 中預設啟用。在 Firefox 49 的其他版本中預設不可用 (Firefox bug 1271487)。
其他
- 如果首選項
network.http.keep_empty_response_headers_as_empty_string設定為true,XMLHttpRequest.getResponseHeader()和XMLHttpRequest.getAllResponseHeaders()將返回空標頭 (Firefox bug 669259)。 - 已移除僅限於 Firefox OS 的 Data Store API (Firefox bug 1261009)。
- 全屏 API 事件處理程式
Document.onfullscreenchange和Document.onfullscreenerror已從Element中移除,因為它們從未在那裡觸發;但是,這些事件處理程式的帶字首版本已保留在那裡以實現相容性 (Firefox bug 1270386)。請注意,此功能尚未預設啟用,但受full-screen-api.unprefix.enabled首選項控制 (Firefox bug 1268749)。 - 已棄用的
Document.mozFullScreen屬性已取消字首,改為Document.fullscreenFirefox bug 1269157。請注意,此功能尚未預設啟用,但受full-screen-api.unprefix.enabled首選項控制 (Firefox bug 1268749)。 - 只讀屬性
Document.fullscreenElement和Document.fullscreenEnabled不再在嘗試更改其值時丟擲異常;相反,新值被靜默忽略,並且 setter 函式是一個空操作 (Firefox bug 1269798)。 - 現在可以使用
DataTransfer.getData()從剪貼簿檢索任何型別的資料:以前,僅支援某些 MIME 型別的資料 Firefox bug 860857。 - 我們的幀時間 API 實現(由
PerformanceCompositeTiming和PerformanceRenderTiming兩個介面組成)已移除,因為規範已完全重寫 (Firefox bug 1271846)。 - 為了匹配規範,
VTTCue.positionAlign屬性現在返回PositionAlign列舉,而不是Align列舉 (Firefox bug 1276129)。 - Web Speech API 的語音合成部分現在預設啟用 (Firefox bug 1268633)。
- 效能時間軸 API 現在在 Nightly 中預設可用(但在 Aurora、Beta 或 Release 版本中不可用)。
- 現在支援 Web Manifests 的
install事件和Window.oninstall事件處理程式 (Firefox bug 1265279)。 - 使用 Web Audio API 的
AudioContext.createPeriodicWave()方法時,您現在可以透過將字典物件作為第三個引數(包含一個引數 —{disableNormalization: true})來指定是否應該歸一化生成的週期波 (Firefox bug 1265405)。 - 在 WebVTT API 中,
VTTCue.positionAlign現在根據規範正確返回PositionAlignSetting列舉;以前它返回AlignSetting列舉 (Firefox bug 1276129)。 - Web Speech API 的語音合成部分現在在所有桌面瀏覽器中預設啟用 (Firefox bug 1268633)。
- Web Animations API 的
Animation()建構函式現在接受空時間軸 (Firefox bug 1096776)。 - 如果已啟用 Web Animations,
KeyframeEffect屬性target現在在 Firefox 中受支援 (Firefox bug 1067769)。
MathML
無更改。
SVG
- 已移除對已棄用的
<altGlyph>、<altGlyphDef>和<altGlyphItem>元素的支援 (Firefox bug 1260032)。
音訊/影片
無更改。
外掛和 Flash
從 Firefox 49 開始,Firefox 預設阻止某些對於網站正常執行不必要的 Flash 內容。此行為由首選項 browser.safebrowsing.blockedURIs.enabled 控制,有助於提高網站和 Firefox 的整體效能,而不會對網站可用性產生重大影響。它還透過消除導致崩潰的主要原因來提高瀏覽體驗的穩定性。被阻止的 Flash 模組包括幾個僅用於指紋識別目的的模組,以及一些“超級 Cookie”模組,未來可能會擴充套件到包括更多型別的被阻止模組。有關詳細資訊,請參閱 Firefox bug 1275591。
這標誌著邁向無外掛未來的下一步。HTML 已經非常接近不再需要外掛即可完成工作的程度。
HTTP
- 已實現
Cache-Control: immutable指令 (Firefox bug 1267474)。有關更多資訊,另請參閱此部落格文章。 - 已實現
require-sri-forContent-Security-Policy(Firefox bug 1265318)。
網路
- 代理自動配置 (PAC) 實現已更新。現在
weekdayRange、dateRange和timeRange支援“反向範圍”,例如,weekdayRange("SAT", "MON")將在當前日期是星期六、星期日或星期一 (Firefox bug 1251332) 時評估為true。
安全
- 已實現
Window.isSecureContext屬性,該屬性指示上下文是否能夠使用需要安全上下文的功能 (Firefox bug 1162772)。
相容性
為了提高與現有內容的相容性,Firefox 現在接受一些 WebKit 字首屬性和特性。
-
以下屬性現在也支援
-webkit字首-webkit-align-items-webkit-align-content-webkit-align-self-webkit-animation-webkit-animation-delay-webkit-animation-direction-webkit-animation-duration-webkit-animation-fill-mode-webkit-animation-iteration-count-webkit-animation-name-webkit-animation-play-state-webkit-animation-timing-function-webkit-backface-visibility-webkit-background-clip-webkit-background-origin-webkit-background-size-webkit-border-bottom-left-radius-webkit-border-bottom-right-radius-webkit-border-image-webkit-border-top-left-radius-webkit-border-top-right-radius-webkit-border-radius-webkit-box-shadow-webkit-filter-webkit-flex-webkit-flex-basis-webkit-flex-direction-webkit-flex-flow-webkit-flex-grow-webkit-flex-shrink-webkit-flex-wrap-webkit-justify-content-webkit-order-webkit-perspective-webkit-perspective-origin-webkit-text-size-adjust-webkit-transform-webkit-transform-origin-webkit-transform-style-webkit-transition-webkit-transition-delay-webkit-transition-duration-webkit-transition-property-webkit-transition-timing-function-webkit-user-select
-
以下屬性對映到等效的帶字首屬性
-webkit-box-flex-webkit-box-ordinal-group-webkit-box-orient-webkit-box-align-webkit-box-pack
-
對於
<image>值- 以下函式對映到其無字首等效項:
-webkit-linear-gradient()、-webkit-radial-gradient()、-webkit-repeating-linear-gradient()和-webkit-repeating-radial-gradient()。 - 支援過時的
-webkit-gradient(並轉換為常規漸變)
- 以下函式對映到其無字首等效項:
-
以下
display值已翻譯-webkit-box到-moz-box-webkit-flex到flex-webkit-inline-box到inline-flex-webkit-inline-flex到-moz-inline-flex
-
支援以下屬性(不對映到任何無字首等效項)
-
WebKitCSSMatrix介面是DOMMatrix的別名 -
已實現以下媒體查詢功能
-webkit-min-device-pixel-ratio作為具有相同值(以dppx為單位)的min-resolution的別名,但此功能預設停用(受 about:config 首選項layout.css.prefixes.device-pixel-ratio-webkit控制)-webkit-max-device-pixel-ratio作為具有相同值(以dppx為單位)的max-resolution的別名;此功能也預設停用,受相同的 about:config 首選項控制。-webkit-transform-3d始終匹配,表示支援 3D 變換。
面向附加元件和 Mozilla 開發者的變更
WebExtensions
- 已新增對
history的支援。這提供了對瀏覽器歷史記錄的訪問,提供了搜尋歷史記錄、獲取以前訪問過的頁面資訊以及新增和刪除歷史記錄條目的方法。 - 向 tabs API 添加了
tabs.removeCSS()方法。此方法允許您移除以前透過呼叫tabs.insertCSS()注入的 CSS。
介面
- 在
EventTarget.addEventListener()中,值mozSystemGroup(僅在 XBL 或 Firefox chrome 中執行的程式碼中啟用)是一個Boolean值,指示偵聽器是否已新增到系統組中。 (Firefox bug 1274520)
其他
無更改。