Firefox 6 開發者發行說明
基於 Gecko 6.0 的 Firefox 6 於 2011 年 8 月 16 日釋出。本文提供了有關此版本中影響開發人員的更改的資訊連結。
Web 開發人員的變更
HTML
- 現在支援 HTML5
<progress>元素,該元素允許您建立進度條。 - 現在支援解析 HTML5
<track>元素,該元素指定媒體元素的文字軌道。此元素現在應該出現在 DOM 中,儘管其行為尚未實現。 - 當容器的角使用
border-radius屬性進行圓角處理時,<iframe>元素現在可以正確地被其容器裁剪。 <form>元素的文字<input>欄位不再支援 XULmaxwidth屬性;這從未是有意的,並且違反了 HTML 規範。您應該改用size屬性來設定輸入欄位的最大寬度。<canvas>CanvasRenderingContext2d屬性fillStyle和strokeStyle過去常常忽略有效顏色定義後包含的垃圾;現在這被正確地視為一個錯誤。例如,"red blue" 作為顏色以前被視為 "red",而它本應該被忽略。<canvas>元素的寬度和高度現在可以正確設定為 0px;以前,當您嘗試這樣做時,它們會被任意設定為 300px。- 已新增對 HTML 自定義資料屬性 (
data-*) 的支援。DOMdataset屬性允許訪問它們。 - 當
<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 與正則表示式匹配。- 不再支援
azimuthCSS 屬性,因為我們已經刪除了aural媒體組中我們僅有的少量程式碼。它從未得到顯著實現,因此暫時刪除笨重的實現比嘗試修補它更有意義。 - 過去,在怪異模式下,
:hover偽類不應用於類選擇器;例如,.some-class:hover不起作用。此怪異行為已被移除。 :indeterminate偽類可以應用於<progress>元素。這是非標準的,但我們希望其他瀏覽器也能採用它,因為它會很有用。-moz-appearanceCSS 屬性中添加了-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.height和Document.width已被移除。Firefox bug 585877DocumentType物件的entities和notations屬性(從未實現且始終返回null)已被移除,因為它們已從規範中移除。DOMConfiguration介面及其使用的document.domConfig屬性均已被移除;它們從未得到支援,並且已從 DOM 規範中移除。hashchange事件現在正確地包含newURL和oldURL欄位。FileReader介面的abort()方法現在在沒有檔案讀取進行時使用會丟擲異常。window.postMessage()方法現在使用 結構化克隆演算法,讓您可以從一個視窗傳遞 JavaScript 物件,而不僅僅是字串。window.historyAPI 現在使用 結構化克隆演算法 來序列化您傳遞給pushState()和replaceState()方法的物件;這讓您可以使用更復雜的物件(包括包含迴圈引用圖的物件)。- 您現在可以透過監聽新的
beforeprint和afterprint事件來檢測何時啟動和完成列印。 document.strictErrorChecking屬性已被移除,因為它從未實現並已從 DOM 規範中移除。- 現在支援標準
event.defaultPrevented屬性;您應該使用它而不是非標準的getPreventDefault()方法來檢測是否在事件上呼叫了event.preventDefault()。 window.top屬性現在是隻讀的。- DOM 檢視,我們從未記錄過,已被移除。這是一個不必要的複雜化的問題,所以我們刪除了它。如果您注意到此更改,您可能做錯了什麼。
EventTarget函式addEventListener()的useCapture引數現在是可選的,與 WebKit 中一樣(並根據規範的最新版本)。XMLHttpRequest物件的mozResponseArrayBuffer屬性已被responseType和response屬性替換。- 已將
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
<mstyle>的實現已更正。
可訪問性 (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
nsCOMArray<T>現在有一個RemoveObjectsAt()方法,用於一次從陣列中刪除多個物件。
從 chrome 使用 DOM
- 在 chrome 程式碼中使用 DOM File API
-
儘管您始終可以從 chrome 程式碼中使用 DOM File API,但
File建構函式現在在從 chrome 使用時支援指定本地路徑名字串。此外,您還可以使用nsIFile物件指定要使用 DOM File API 訪問的檔案。
介面更改
nsINavHistoryQueryOptions現在支援使用新的SORT_BY_FREQUENCY_ASCENDING和SORT_BY_FREQUENCY_DESCENDING常量按頻率順序排序。nsIFilePicker有一個新的nsIFilePicker.addToRecentDocs屬性,它允許您指示所選檔案是否應新增到使用者的“最近文件”列表(如果存在)。此屬性在隱私瀏覽模式下無效。- 帶有專案 ID 引數的
nsINavBookmarkObserver方法現在也需要 GUID。 - 如果指定的首選項不存在或沒有使用者設定的值,
nsIPrefBranch.clearUserPref()不再丟擲異常。相反,它什麼也不做。 nsIMemoryReporter介面現在支援指示所描述記憶體的型別(對映、堆或其他)。nsISHEntry的stateData屬性現在返回一個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 649502 和 Firefox bug 585196。
nsITimedChannelnsIWebSocketListenernsIWebSocketProtocol
已移除的介面
以下介面是不再需要的實現細節
nsIDOMDocumentEvent(參見 Firefox bug 655517)nsIDOMDocumentTraversal(參見 Firefox bug 655514)nsIDOMDocumentRange(參見 Firefox bug 655513)IWeaveCrypto(參見 Firefox bug 651596)nsIDOM3DocumentEvent(參見 Firefox bug 481863)nsIDOMAbstractViewnsILiveTitleNotificationSubjectnsIPlugin(參見 Firefox bug 637253)nsIPluginInstance(參見 Firefox bug 637253)nsIHTMLEditRules(參見 Firefox bug 633750)nsIXSLTProcessorObsolete(參見 Firefox bug 649534)
其他更改
- 從應用程式程式碼使用首選項
-
提供了一個新的靜態 API,用於輕鬆訪問首選項;這僅適用於應用程式程式碼,不能由附加元件使用。