Firefox 8 開發者發行說明

Firefox 8 於 2011 年 11 月 8 日釋出。本文為Web 開發者以及附加元件和 Mozilla 專案開發者提供了資訊,以幫助充分利用此版本的功能。

Web 開發人員的變更

HTML

  • 已新增 HTMLImageElement crossOrigin 屬性,並且已將 crossorigin 屬性新增到 <img> 元素中。(參見 Firefox 錯誤 664299
  • HTMLSelectElement.add() 方法現在支援在新專案插入之前指定一個專案或專案的索引。以前它只支援指定一個專案。(參見 Firefox 錯誤 666200
  • HTMLIsIndexElement 建構函式已被移除。自 Firefox 4 之前,沒有元素實現過此介面。
  • 現在支援 HTML5“上下文選單”功能(contextmenu 屬性),它允許你向原生上下文選單新增自定義元素特定專案(此實現仍處於實驗階段,等待規範更改;參見 Firefox 錯誤 617528)。
  • 已為所有元素添加了對 HTMLElement.accessKeyLabel 屬性的支援。
  • <input><textarea> 元素現在支援 selectionDirection 屬性,並且它們的 setSelectionRange() 方法已更新,以支援可選地指定方向。
  • 如果大多數元素已透過使用 tabindex 屬性變得可聚焦,並且使用者隨後聚焦了該元素,則會在其周圍繪製焦點環。
  • 在一組巢狀的 <label> 元素中,點選事件不再觸發多個

DOM

  • insertAdjacentHTML 方法已實現。
  • BlobBuilder 現在有一個 getFile() 方法,該方法將 Blob 的內容作為檔案返回。
  • FileReaderSync 介面(FileAPI 的一部分)已實現。
  • 巢狀 <label> 中的事件處理已修復。
  • 你現在可以使用 window.postMessage() 在視窗之間傳遞 FileFileList 物件。
  • 在編輯 contenteditable 區域時,透過按回車鍵退出標題,或透過按兩次回車鍵退出列表編輯模式,現在會返回到段落輸入模式(即 <p> 塊內的段落),而不是透過 <br> 元素分隔行。
  • 修復了一個錯誤,該錯誤導致在應用於 contenteditable 區域的第一行時,對齊無法正確生效。
  • 修復了一個錯誤,該錯誤導致在 contenteditable 區域開頭按下刪除或退格鍵時,如果存在上一個 contenteditable 塊,則會影響該塊。
  • Document.getSelection() 現在返回與 window.getSelection() 相同的 Selection 物件,而不是將其字串化
  • HTML5 selectionDirection 屬性使得可以定義可編輯文字中選擇的方向。
  • HTMLMediaElement 現在有一個 seekable 屬性,它返回一個 TimeRanges 物件。
  • HTMLMediaElement.preload 屬性現在正確地反映為列舉值
  • 當使用無效值時,crossOrigin 屬性預設為“Anonymous”。
  • 當預設 Cookie 設定按站點覆蓋時,navigator.cookieEnabled 現在返回正確的資訊。

JavaScript

  • 不帶引數呼叫 RegExp.exec()RegExp.test() 現在會與字串“undefined”進行匹配。
  • 不帶引數或帶 undefined 引數呼叫 String.search()String.match() 現在會與空字串進行匹配,從而匹配所有字串。
  • 透過新的(非標準)watch()unwatch() 方法實現了對監視列表的支援。

CSS

網路

  • 根據 RFC 2231RFC 5987,雙引號不再被接受為編碼的分隔符。
  • MIME 頭部欄位解析器(Content-Disposition)現在在引數中需要“=”。
  • 停用 JavaScript 後,指令碼不再下載。
  • 不再支援 SSL 2.0。

WebSocket

  • WebSocket 物件的 send() 方法不再錯誤地返回布林值。
  • WebSocket 物件的 close() 方法現在與標準的當前草案匹配,並且關閉事件現在正確使用 CloseEvent 介面。
  • 現在支援 WebSocket 物件的 extensions 屬性。
  • WebSocket 建構函式現在支援協議陣列以及單個協議字串。
  • WebSocket 不允許混合內容;也就是說,你不能再從安全內容開啟與非安全 WebSocket 伺服器的連線。
  • WebSocket 的連線錯誤現在會觸發 onerror 處理程式。
  • WebSocket API 已更新到規範的最新草案(參見 Firefox 錯誤 674890Firefox 錯誤 674527Firefox 錯誤 674716)。
  • WebSocket 的 deflate-stream 擴充套件已被停用;它已被棄用,並且破壞了與某些站點的相容性。

WebGL

  • 現在可以透過 CORS 批准允許跨域紋理
  • 使用 Direct2D/Direct3D 10 的跨程序渲染。

MathML

  • 已新增對頂層 <math> 元素的 displaystyle 屬性的支援。
  • 已糾正 <mtable>align 屬性的負行號解釋。

開發者工具

  • console 物件有一個新的 dir() 方法,它顯示指定物件屬性的互動式列表。

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

有關您可能需要使附加元件與 Firefox 8 相容的更改指南,請參見更新 Firefox 8 的附加元件

注意: Firefox 8 要求重新編譯二進位制元件,所有主要的 Firefox 版本都如此。

XPCOM

Components.utils

已建立新的方法 Components.utils.createObjectIn()Components.utils.makeObjectPropsNormal(),以便更容易在特定隔離區中建立物件。

  • 你現在可以透過 new File 從元件程式碼例項化 DOM File 物件,而無需直接例項化 nsIDOMFile
  • nsTPtrArray 陣列型別已被移除。其功能現在都可在 nsTArray 上獲得,nsTArray 在使用指標型別例項化時現在提供 SafeElementAt() 方法。

Worker

不再可能從 ChromeWorker 訪問 XPCOM 物件。自 Firefox 錯誤 649537 起,XPConnect 已在工作執行緒上下文中停用。

XUL

  • 在對 contentDocument 的值呼叫 document.execCommand() 時出現的錯誤已修復。自 Firefox 3 以來,這已導致錯誤而不是正常工作。
  • 自舉附加元件現在可以使用 chrome.manifest 檔案載入 chrome。
  • 指定最大尺寸時,XUL 影像現在在兩個方向上以相同的比例縮小。

構建系統更改

  • 以下構建配置選項已被移除

    • --enable-timeline
    • --disable-storage
    • --necko-disk-cache
  • 將 IDL 檔案編譯為標頭檔案時,如果需要,會自動包含標頭檔案 jspubtd.h。在使用 jsval 或 [implicit_jscontext] 的 IDL 檔案中手動包含 jspubtd.h 和/或 jsapi.h 不再需要。

Chrome 註冊

  • platformversion 標誌可在 chrome.manifest 中用於指定 Gecko 版本相容性。

介面更改

  • mozIJSSubScriptLoader.loadSubScript() 方法現在儘可能從啟動快取載入指令碼。
  • ownerWindow 屬性已從 nsIAccessNode 介面中移除。
  • nsIDOMStorageWindow 介面已合併到 nsIDOMWindow 介面中。
  • nsIDOMWindowInternal 介面的所有成員都已移至 nsIDOMWindow 介面。該介面本身(不帶成員)仍可用於相容性,直到 Firefox 9。
  • 為了提高效能,Places 資料庫非同步更新的回撥處理已更改。參見新的 mozIVisitInfoCallback.handleResult()mozIVisitInfoCallback.handleError() 方法,它們取代了舊的用於錯誤和成功條件處理的單一方法。
  • nsIMemoryReporterKIND_MAPPED 屬性已被棄用,取而代之的是 KIND_NONHEAP,添加了新的單位型別 UNITS_COUNT_CUMULATIVEUNITS_PERCENTAGE
  • nsIMemoryReporterManager 介面有一個新的 explicit 屬性,它報告顯式記憶體分配的總大小。
  • nsIMemoryReporterManager 介面有一個新的 resident 屬性,它報告使用的物理記憶體量。
  • nsINetworkLinkService 介面有一個新的屬性 linkType。此屬性提供正在使用的網路連線型別。所有作業系統目前都返回 LINK_TYPE_UNKNOWN。Android 支援因 perceived 安全問題而被撤回。
  • nsISelection2 介面已合併到 nsISelectionPrivate 介面中。
  • nsISelection3 介面已合併到 nsISelection 介面中。
  • 由於效能原因,nsISessionStartup 屬性狀態現在是 jsval 而不是字串。
  • 對於最小化視窗,nsIDocShell 屬性 isActive 現在為 false
  • nsIDownloadHistory.addDownload() 方法現在儲存下載在本地檔案系統中的目標。

已移除的介面

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

  • nsITimelineService
  • nsIDOMHTMLIsIndexElement

nsIWorkerFactory 介面也已被移除。仍然可以使用 WorkerChromeWorker 建構函式建立 Worker。

其他更改

  • 當視窗最小化、取消最小化或在全屏和視窗模式之間切換時,它會收到一個 sizemodechange 事件。
  • 您現在可以使用 extensions.autoDisableScopes 首選項來停用來自特定附加元件安裝位置的附加元件的自動安裝。
  • Document 物件上的新 mozSyntheticDocument 屬性可讓您確定文件是否是合成的(即,像獨立的影像、影片或音訊檔案一樣),而不是完整、標準的 DOM 文件。這可能很有用,例如,如果您想在這種情況下呈現不同的使用者介面(例如,根據這種情況以不同的方式新增上下文專案)。
  • 您現在可以在開啟 about:config 時指定過濾器;例如,about:config?filter=sessionstore 將僅顯示與會話儲存相關的首選項。