Firefox 6 開發者發行說明

基於 Gecko 6.0 的 Firefox 6 於 2011 年 8 月 16 日釋出。本文提供了有關此版本中影響開發人員的更改的資訊連結。

Web 開發人員的變更

HTML

  • 現在支援 HTML5 <progress> 元素,該元素允許您建立進度條。
  • 現在支援解析 HTML5 <track> 元素,該元素指定媒體元素的文字軌道。此元素現在應該出現在 DOM 中,儘管其行為尚未實現。
  • 當容器的角使用 border-radius 屬性進行圓角處理時,<iframe> 元素現在可以正確地被其容器裁剪。
  • <form> 元素的文字 <input> 欄位不再支援 XUL maxwidth 屬性;這從未是有意的,並且違反了 HTML 規範。您應該改用 size 屬性來設定輸入欄位的最大寬度。
  • <canvas> CanvasRenderingContext2d 屬性 fillStylestrokeStyle 過去常常忽略有效顏色定義後包含的垃圾;現在這被正確地視為一個錯誤。例如,"red blue" 作為顏色以前被視為 "red",而它本應該被忽略。
  • <canvas> 元素的寬度和高度現在可以正確設定為 0px;以前,當您嘗試這樣做時,它們會被任意設定為 300px。
  • 已新增對 HTML 自定義資料屬性 (data-*) 的支援。DOM dataset 屬性允許訪問它們。
  • <textarea> 元素獲得焦點時,文字插入點現在預設放置在文字的開頭而不是結尾。這使得 Firefox 的行為與其他瀏覽器一致。

CSS

-moz-text-decoration-color

此新屬性允許您設定文字裝飾(如下劃線、上劃線和刪除線)使用的顏色。

-moz-text-decoration-line

此新屬性允許您設定新增到元素的文字裝飾型別。

-moz-text-decoration-style

此新屬性允許您設定文字裝飾的樣式(如下劃線、上劃線和刪除線)。樣式包括單筆畫、雙筆畫、波浪線、點線等。

-moz-hyphens

此新屬性允許您控制行包裝期間單詞的連字元處理方式。

-moz-orient

一個新的(目前是 Mozilla 特有的)屬性,允許您控制某些元素(特別是 <progress>)的垂直或水平方向。

::-moz-progress-bar

一個 Mozilla 特有的偽元素,允許您樣式化 <progress> 元素中表示任務已完成部分的區域。

其他更改

  • @-moz-document 屬性有一個新的 regexp() 函式,它允許您將文件的 URL 與正則表示式匹配。
  • 不再支援 azimuth CSS 屬性,因為我們已經刪除了 aural 媒體組中我們僅有的少量程式碼。它從未得到顯著實現,因此暫時刪除笨重的實現比嘗試修補它更有意義。
  • 過去,在怪異模式下,:hover 偽類不應用於類選擇器;例如,.some-class:hover 不起作用。此怪異行為已被移除。
  • :indeterminate 偽類可以應用於 <progress> 元素。這是非標準的,但我們希望其他瀏覽器也能採用它,因為它會很有用。
  • -moz-appearance CSS 屬性中添加了 -moz-win-exclude-glass 值,以排除 Windows 系統上 Aero Glass 玻璃效果中的不透明區域。
  • Firefox bug 658949 更改了資料 URL 中雜湊 (#) 符號的處理方式,這可能會破壞包含此類符號的 CSS 樣式表(如果未轉義)。

DOM

從程式碼中使用媒體查詢

您現在可以使用 window.matchMedia() 方法和 MediaQueryList 介面以程式設計方式測試媒體查詢字串的結果。

觸控事件

Firefox 6 增加了對 W3C 標準觸控事件的支援;這使得在觸控式螢幕和觸控板等觸控敏感表面上同時解釋一個或多個觸控變得容易。

伺服器傳送事件

伺服器傳送事件使得 Web 應用程式能夠請求伺服器傳送事件,就像任何本地建立的 DOM 事件一樣。

  • navigator.securityPolicy,長期以來一直返回空字串,已被完全移除。
  • BlobBuilder 現已實現,但目前它帶有字首(因此您需要使用 MozBlobBuilder)。
  • Document.heightDocument.width 已被移除。Firefox bug 585877
  • DocumentType 物件的 entitiesnotations 屬性(從未實現且始終返回 null)已被移除,因為它們已從規範中移除。
  • DOMConfiguration 介面及其使用的 document.domConfig 屬性均已被移除;它們從未得到支援,並且已從 DOM 規範中移除。
  • hashchange 事件現在正確地包含 newURLoldURL 欄位
  • FileReader 介面的 abort() 方法現在在沒有檔案讀取進行時使用會丟擲異常。
  • window.postMessage() 方法現在使用 結構化克隆演算法,讓您可以從一個視窗傳遞 JavaScript 物件,而不僅僅是字串。
  • window.history API 現在使用 結構化克隆演算法 來序列化您傳遞給 pushState()replaceState() 方法的物件;這讓您可以使用更復雜的物件(包括包含迴圈引用圖的物件)。
  • 您現在可以透過監聽新的 beforeprintafterprint 事件來檢測何時啟動和完成列印
  • document.strictErrorChecking 屬性已被移除,因為它從未實現並已從 DOM 規範中移除。
  • 現在支援標準 event.defaultPrevented 屬性;您應該使用它而不是非標準的 getPreventDefault() 方法來檢測是否在事件上呼叫了 event.preventDefault()
  • window.top 屬性現在是隻讀的。
  • DOM 檢視,我們從未記錄過,已被移除。這是一個不必要的複雜化的問題,所以我們刪除了它。如果您注意到此更改,您可能做錯了什麼。
  • EventTarget 函式 addEventListener()useCapture 引數現在是可選的,與 WebKit 中一樣(並根據規範的最新版本)。
  • XMLHttpRequest 物件的 mozResponseArrayBuffer 屬性已被 responseTyperesponse 屬性替換。
  • 已將 dataset 屬性新增到 HTMLElement 介面,允許訪問元素的 data-* 全域性屬性
  • 已實現 CustomEvent 介面。(參見 Firefox bug 427537
  • 出於安全原因,當用戶在位置欄中輸入 data:javascript: URL 時,它們不再繼承當前頁面的安全上下文;相反,會建立一個新的、空的安全上下文。這意味著透過在位置欄中輸入 javascript: URL 載入的指令碼不再能夠訪問 DOM 方法等。但是,當指令碼使用這些 URL 時,它們仍然像以前一樣工作。

JavaScript

  • 過去,可以在幾個內建函式(eval()parseInt()Date.parse() 等)上使用 new 運算子,根據規範,它們不應該允許這樣做。現在不再支援這種行為。以這種方式使用 new 運算子從未得到官方支援,也未廣泛使用,因此此更改不太可能影響您。
  • ECMAScript 2015 WeakMaps 已作為原型實現新增。

SVG

  • 現在支援 pathLength 屬性。
  • 當從 data: URL 載入時,SVG 模式、漸變和濾鏡現在可以正常工作。

MathML

可訪問性 (ARIA)

  • aria-busy 的值發生變化時,現在會正確傳送狀態更改事件。
  • aria-sort 發生時,現在會正確傳送屬性更改事件。

網路

WebSocket

WebSockets 已更新到 Firefox 6 的協議版本 07。此外,全域性 WebSocket 物件已重新命名為 MozWebSocket,以防止其被錯誤地用於檢測未加字首的 WebSockets 的可用性。

  • Content-Disposition 頭部的解析已修復,以正確地將反斜槓轉義的 ASCII 字元解釋為字元本身。以前它錯誤地將該字元替換為下劃線 ("_")。
  • 當使用引號時,Set-Cookie 頭部上路徑欄位的值現在可以正確解釋;以前,它們被視為路徑字串的一部分而不是分隔符。此更改可能會影響與某些網站的相容性,因此作者應檢查其程式碼。
  • 現在支援 Upgrade 請求頭;您可以透過呼叫 nsIHttpChannelInternal.HTTPUpgrade() 請求將 HTTP 通道升級到另一個協議。

其他更改

  • 已移除對微摘要的支援;它們從未被廣泛使用,也不易發現,並且繼續支援它們使得 Places(書籤和歷史記錄)架構的改進變得困難。
  • WebGL 現在支援 OES_texture_float 擴充套件。
  • 新的 Scratchpad 工具提供了一個方便的場所來實驗 JavaScript 程式碼。
  • 已將 console.trace() 方法新增到 Console API (Firefox bug 585956)。

Mozilla 和附加元件開發者的更改

有關您可能需要進行的更改的概述,以使您的附加元件與 Firefox 6 相容,請參閱更新適用於 Firefox 6 的附加元件

注意: Firefox 6 要求重新編譯二進位制元件,所有主要的 Firefox 版本都是如此。有關詳細資訊,請參閱二進位制介面

JavaScript 程式碼模組

FileUtils.jsm

  • openSafeFileOutputStream() 方法現在使用 DEFER_OPEN 行為標誌 開啟檔案,而不是嘗試立即開啟它們。

XPCOMUtils.jsm

  • 新的 importRelative() 方法允許您從相對於另一個 JavaScript 程式碼模組路徑的路徑載入一個 JavaScript 程式碼模組。這使得構建相互依賴的模組變得更容易。

XPCOM

從 chrome 使用 DOM

在 chrome 程式碼中使用 DOM File API

儘管您始終可以從 chrome 程式碼中使用 DOM File API,但 File 建構函式現在在從 chrome 使用時支援指定本地路徑名字串。此外,您還可以使用 nsIFile 物件指定要使用 DOM File API 訪問的檔案。

介面更改

  • nsINavHistoryQueryOptions 現在支援使用新的 SORT_BY_FREQUENCY_ASCENDINGSORT_BY_FREQUENCY_DESCENDING 常量按頻率順序排序。
  • nsIFilePicker 有一個新的 nsIFilePicker.addToRecentDocs 屬性,它允許您指示所選檔案是否應新增到使用者的“最近文件”列表(如果存在)。此屬性在隱私瀏覽模式下無效。
  • 帶有專案 ID 引數的 nsINavBookmarkObserver 方法現在也需要 GUID。
  • 如果指定的首選項不存在或沒有使用者設定的值,nsIPrefBranch.clearUserPref() 不再丟擲異常。相反,它什麼也不做。
  • nsIMemoryReporter 介面現在支援指示所描述記憶體的型別(對映、堆或其他)。
  • nsISHEntrystateData 屬性現在返回一個 nsIStructuredCloneContainer
  • nsIURI 有一個新的 nsIURI.ref 屬性,它返回 URI 的引用部分(“#”之後的部分)。它還有新的方法 nsIURI.cloneIgnoringRef(),它克隆不帶 ref 成員的 nsIURI,以及 nsIURI.equalsExceptRef(),它比較另一個 nsIURI 時忽略 ref 成員。

新介面

mozIAsyncFavicons

一項新服務,允許您非同步訪問收藏夾服務。

nsIEventSource

詳情待定。

nsIGSettingsCollection

詳情待定。

nsIGSettingsService

詳情待定。

nsIHttpUpgradeListener

用於透過 nsIHttpChannelInternal.HTTPUpgrade() 方法處理 HTTP 升級請求的回撥介面。

nsIStructuredCloneContainer

用於儲存已使用 結構化克隆演算法 序列化的物件的容器。

nsITelemetry

實現遙測支援,允許記錄遙測資料,用於呈現直方圖以進行效能跟蹤。參見 Firefox bug 649502Firefox bug 585196

nsITimedChannel

參見 Firefox bug 576006

nsIWebSocketListener

參見 Firefox bug 640003

nsIWebSocketProtocol

參見 Firefox bug 640003

已移除的介面

以下介面是不再需要的實現細節

其他更改

從應用程式程式碼使用首選項

提供了一個新的靜態 API,用於輕鬆訪問首選項;這僅適用於應用程式程式碼,不能由附加元件使用。