Firefox 9 開發者發行說明
Firefox 9 Windows 版於 2011 年 12 月 20 日釋出。Mac 和 Linux 9.0.1 版(修復了在最後一刻發現的崩潰 bug)於 2011 年 12 月 21 日釋出。
Web 開發人員的變更
HTML
- 現在
<li>元素的value屬性可以是負值。以前,負值會被轉換為 0。 - 現在,在使用
<audio>和<video>元素時,你可以在媒體的 URI 中指定媒體的開始和停止時間。 <input>和<textarea>元素現在在呼叫拼寫檢查器時會尊重lang屬性的值。- 當
<input>元素與type="file"和accept="image/*"一起使用時,Firefox Android 版現在允許使用者無需離開瀏覽器即可使用手機攝像頭拍照。 - 現在支援 Windows Vista 風格的 PNG ICO 影像。
- 當 CORS 獲得授權時,繪製使用
crossorigin屬性請求 CORS 訪問的影像不再錯誤地汙染畫布。 rowspan屬性的值現在最大可以達到 65,534,高於之前的 8190。
CSS
- 現在支援
font-stretch屬性。 - 現在支援
columns屬性,帶有-moz字首。這是以下屬性的簡寫:column-width和column-count。 - 當使用
<link>元素包含的樣式表已完全載入並解析(但尚未應用於文件)時,現在會觸發一個load事件。此外,如果在處理樣式表時發生錯誤,則會觸發一個error事件。 - 現在,你可以使用
text-overflow的新兩值語法來指定內容的左邊緣和右邊緣的溢位設定。
JavaScript
無更改。
DOM
- 使用全屏模式
-
新的全屏 API 提供了一種使用整個螢幕呈現內容的方式,沒有瀏覽器介面。這對於影片和遊戲來說非常棒。此 API 目前處於實驗階段並帶有字首。
- 現在已實現
Node.contains()方法;這允許你確定給定節點是否是另一個節點的後代。 - 現在已實現
Node.parentElement屬性;這會返回 DOM 節點的父Element,如果父節點不是元素,則返回null。 - 現在支援 DOM Level 3 合成事件。
- 現在已實現
Document.scripts屬性;這會返回文件中所有<script>元素的HTMLCollection。 - 現在已實現
Document.queryCommandSupported()方法。 - 對
<body>元素可以監聽的事件集已進行了修訂,以符合 HTML5 規範的最新草案。DOM 事件指南中的事件列表反映了可以在<body>上監聽哪些事件。 - 現在,
readystatechange事件只在Document上觸發,如預期的那樣。 - 事件處理器現在實現為標準 IDL 介面。在大多數情況下,這不會影響內容,但也有例外。
XMLHttpRequest添加了一個新的響應型別"moz-json",允許XMLHttpRequest自動為你解析 JSON 字串;當你請求此型別時,返回的 JSON 字串會被解析,因此response屬性的值是生成的 JavaScript 物件。XMLHttpRequest“進度”事件現在對於收到的每個資料塊都會可靠地傳送;過去,可能不會為收到的最後一個數據塊觸發“進度”事件。現在,你只需跟蹤“進度”事件即可跟蹤進度,而無需再監視“載入”事件來檢測最後一個數據塊的接收。- 過去,使用
null監聽器呼叫addEventListener()會丟擲異常。現在它會在不出現錯誤且沒有影響的情況下返回。 - 新的
navigator.doNotTrack屬性允許你的內容輕鬆確定使用者是否啟用了其不跟蹤偏好;如果此值為“yes”,則不應跟蹤使用者。 - 當呼叫
splitText()和normalize()時,Range和Selection物件現在按照其規範行事。 - doctype 節點的
Node.ownerDocument值現在是呼叫createDocumentType()建立該節點的文件,而不是null。 window.navigator.taintEnabled已被移除;它已經很多年沒有被支援了。
Worker
- 在 Firefox 8 中,以 blob URL 實現的 Worker 已損壞,從 Firefox 9 開始再次工作。
WebGL
- 現在支援 WebGL 上下文
drawingBufferWidth和drawingBufferHeight屬性。
MathML
- 已移除
<maction>元素的actiontype屬性的非標準restyle值。 - 雖然仍不受支援,但使用
mlabeledtr元素不再完全破壞渲染。有關此元素實際支援的進展,請參閱 Firefox bug 689641。
網路
- 現在,你可以使用 XMLHttpRequest 傳送 JavaScript 型別陣列的內容(即
ArrayBuffer物件的內容)。 - WebSocket 連線現在允許在否則有效的 UTF-8 資料幀中接收非字元,而不是失敗。
- XSLT 請求的 HTTP
Accept頭已更改為*/*以簡化。由於獲取 XSLT 無論如何都會回退到*/*,因此簡化初始請求是有意義的。 - 伺服器嘗試使用
301 Moved Permanently或307 Temporary Redirect響應程式碼將使用者重定向到javascript:URI 的操作現在會導致“錯誤連線”錯誤,而不是實際重定向。這可以防止某些型別的跨站點指令碼攻擊。 - 以前,提供空
Content-Disposition的內容被視為Content-Disposition為“attachment”;這並不總是按預期工作。現在,這些內容被視為Content-Disposition為“inline”。 - 磁碟快取中專案預設最大大小已增加到 50 MB;以前,只有最大 5 MB 的專案會被快取。
開發者工具
- Web 控制檯現在支援其日誌記錄方法中的基本字串替換。
- 現在,你可以在 Web 控制檯中建立視覺上巢狀的輸出塊,以幫助使其更易於閱讀。
Mozilla 和附加元件開發者的更改
有關你可能需要對外掛進行哪些更改才能使其在 Firefox 9 中工作的概述,請參閱為 Firefox 9 更新外掛。
XUL
- 當標籤頁正在被會話儲存服務恢復時,
<xul:tab>元素現在有一個pending屬性,其值為true。這可以用於在主題中設定標籤頁的樣式。此屬性不存在於非待定標籤頁上。 - 當標籤頁自上次成為活動標籤頁以來已更改,或者自當前會話開始以來尚未被選擇時,
<xul:tab>元素現在有一個unread屬性,其值為true。此屬性不存在於未讀標籤頁上。 - 現在,你可以使用
<xul:panel>作為 DOM 拖放操作的拖動影像。這允許你使用標準拖放 API 進行 XUL 內容的拖放。 <xul:notificationbox>元素的appendNotification()方法現在允許你指定一個回撥函式,該函式會在與通知框相關的有趣事件發生時被呼叫。目前,唯一的事件是“removed”,它會告訴你通知框已從其視窗中移除。
JavaScript 程式碼模組更改
FileUtils.jsm現在有一個File建構函式,它返回一個表示由其路徑名指定的檔案nsIFile物件。
服務更改
- 內容偏好設定服務現在處理隱私瀏覽模式(參見 Firefox bug 679784)。
NSPR
- NSPR 現在有一個“append”模組,允許你將新資料附加到現有日誌的末尾。
介面更改
已移除的介面
- 在簡化 Places 和 DocShell 程式碼時,
nsIGlobalHistory3已被移除。
雜項介面更改
nsISound介面有一個新的常量EVENT_EDITOR_MAX_LEN。這允許在文字欄位中鍵入超過最大允許字元數時播放系統聲音。目前,這僅在 Windows 上使用。nsIScriptError2介面有新的timeStamp和innerWindowID屬性;此外,initWithWindowID()方法現在接受內部視窗 ID 而不是外部視窗 ID。- 已新增
nsIBidiKeyboard.haveBidiKeyboards屬性;這允許你確定系統是否為每個方向(從左到右和從右到左)至少安裝了一個鍵盤。 - 新的
nsIEditor.isSelectionEditable屬性允許你確定當前選擇錨點是否可編輯。這有助於支援文件只有部分可編輯的情況,透過讓你檢視當前選擇是否在可編輯部分中。 nsIBrowserHistory.registerOpenPage()和nsIBrowserHistory.unregisterOpenPage()方法已作為 Places 系統性能大修的一部分被移除。你可以使用mozIPlacesAutoComplete中的相應方法代替。- 已新增
nsIDOMWindowUtils.wrapDOMFile()方法;它為給定的nsIFile返回一個 DOMFile物件。 - 添加了
nsIChromeFrameMessageManager.removeDelayedFrameScript()方法以支援移除延遲載入指令碼。自舉外掛應在關閉時使用此方法,以移除使用nsIChromeFrameMessageManager.loadFrameScript()並設定延遲載入標誌載入的任何指令碼。這作為browser.messageManager.removeDelayedFrameScript()暴露給外掛。 nsIAppStartup介面有一個新的interrupted屬性,它讓你知道啟動過程是否在任何時候被互動式提示中斷。這在效能評估期間對啟動時間進行計時時很有用,例如,能夠從被中斷的會話中刪除數字。nsIEditorSpellCheck介面已修訂,以支援按站點選擇拼寫檢查詞典。
IDL 解析器
IDL 解析器不再支援從未完全實現的唯一指標概念。
構建系統更改
- 用於構建獨立 XPConnect 的
--enable-application=standalone選項已移除;它自 2007 年以來就從未工作過。 - 已移除對構建獨立 Necko 和 Transformiix XSLT 的支援;你不能再使用
--enable-application=network或--enable-application=content/xslt。 - 構建系統現在在
$topsrcdir/.mozconfig或$topsrcdir/mozconfig中查詢.mozconfig,並且在其他任何地方都不查詢,除非你使用MOZCONFIG環境變數覆蓋.mozconfig路徑。 - SDK 中的
xpidl工具已替換為pyxpidl。
其他更改
- 拼寫檢查器不再對嘗試拼寫檢查的單詞長度施加任意 130 個字元的限制。此限制以前是為了防止拼寫檢查器中發生的崩潰,但底層 bug 已經修復。
- 你現在可以使用“JavaScript-navigator-property”類別註冊元件以向
window.navigator物件新增功能。