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-widthcolumn-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() 時,RangeSelection 物件現在按照其規範行事。
  • doctype 節點的 Node.ownerDocument 值現在是呼叫 createDocumentType() 建立該節點的文件,而不是 null
  • window.navigator.taintEnabled 已被移除;它已經很多年沒有被支援了。

Worker

  • 在 Firefox 8 中,以 blob URL 實現的 Worker 已損壞,從 Firefox 9 開始再次工作。

WebGL

  • 現在支援 WebGL 上下文 drawingBufferWidthdrawingBufferHeight 屬性。

MathML

  • 已移除 <maction> 元素的 actiontype 屬性的非標準 restyle 值。
  • 雖然仍不受支援,但使用 mlabeledtr 元素不再完全破壞渲染。有關此元素實際支援的進展,請參閱 Firefox bug 689641

網路

  • 現在,你可以使用 XMLHttpRequest 傳送 JavaScript 型別陣列的內容(即 ArrayBuffer 物件的內容)。
  • WebSocket 連線現在允許在否則有效的 UTF-8 資料幀中接收非字元,而不是失敗。
  • XSLT 請求的 HTTP Accept 頭已更改為 */* 以簡化。由於獲取 XSLT 無論如何都會回退到 */*,因此簡化初始請求是有意義的。
  • 伺服器嘗試使用 301 Moved Permanently307 Temporary Redirect 響應程式碼將使用者重定向到 javascript: URI 的操作現在會導致“錯誤連線”錯誤,而不是實際重定向。這可以防止某些型別的跨站點指令碼攻擊。
  • 以前,提供空 Content-Disposition 的內容被視為 Content-Disposition 為“attachment”;這並不總是按預期工作。現在,這些內容被視為 Content-Disposition 為“inline”。
  • 磁碟快取中專案預設最大大小已增加到 50 MB;以前,只有最大 5 MB 的專案會被快取。

開發者工具

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 介面有新的 timeStampinnerWindowID 屬性;此外,initWithWindowID() 方法現在接受內部視窗 ID 而不是外部視窗 ID。
  • 已新增 nsIBidiKeyboard.haveBidiKeyboards 屬性;這允許你確定系統是否為每個方向(從左到右和從右到左)至少安裝了一個鍵盤。
  • 新的 nsIEditor.isSelectionEditable 屬性允許你確定當前選擇錨點是否可編輯。這有助於支援文件只有部分可編輯的情況,透過讓你檢視當前選擇是否在可編輯部分中。
  • nsIBrowserHistory.registerOpenPage()nsIBrowserHistory.unregisterOpenPage() 方法已作為 Places 系統性能大修的一部分被移除。你可以使用 mozIPlacesAutoComplete 中的相應方法代替。
  • 已新增 nsIDOMWindowUtils.wrapDOMFile() 方法;它為給定的 nsIFile 返回一個 DOM File 物件。
  • 添加了 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 物件新增功能。