更新 Firefox 10 的附加元件

儘管 Firefox 10 中發生了許多變化,理論上可能會導致附加元件相容性中斷,但其中大多數都相對晦澀,因此不太可能影響到您。本文將指導您完成附加元件的更新。

預設相容

首先也是最重要的一點是,從 Firefox 10 開始,附加元件預設被假定為相容。除非您在清單中使用 <em:strictCompatibility> 標誌,否則 Firefox 不會再將您的附加元件標記為在升級到 Firefox 10 或更高版本後不相容。您可以使用此標誌來確保可能中斷的附加元件不會嘗試在更新的 Firefox 版本中執行。值得注意的是,包含二進位制元件的附加元件將始終進行嚴格的相容性檢查,因為二進位制元件始終需要為每個主要的 Firefox 版本重新編譯。

注意:即使在預設相容的世界裡,您仍然應該在 Firefox 10 上測試您的附加元件。請閱讀本文的其餘部分,瞭解您是否需要進行任何更改。

DOM 更改

一些已棄用的 API 已從 DOM 中移除

Node.isSameNode()

這是最有可能影響附加元件開發者的移除,因為它曾經相當常用。您現在可以使用 JavaScript === 運算子來比較節點,而不是使用這個已棄用的方法。此方法已根據 DOM4 規範棄用。

text.isElementContentWhitespace, text.replaceWholeText()

這些 API 已根據 DOM4 規範棄用。

Document.xmlEncoding, Document.xmlStandalone, Document.xmlVersion

所有這些 API 已根據 DOM4 規範棄用。它們最常用於檢測正在顯示的文件是 HTML 還是 XML。有關推薦的檢測方法,請參閱 Document.xmlVersion 文章。

XPCOM 和介面更改

最重大的變化是,所有之前使用 PRBool 資料型別的地方現在都使用標準的 C++ bool 型別。

已移除的介面

以下介面已被移除

nsIDOMNSHTMLFrameElement

此介面已合併到 nsIDOMHTMLFrameElement 介面中。

nsIDOMNSHTMLElement

此介面已合併到 nsIDOMHTMLElement 中。

nsIDocumentViewer

此介面已合併到 nsIContentViewer 中。

其他介面更改

  • nsNavHistory 不再實現 nsICharsetResolver 介面。請注意,nsICharsetResolver 已不再使用,並將在 Firefox 11.0 中移除
  • mozISpellCheckingEnginensIEditorSpellCheck 介面已更新,以允許無需重啟的附加元件向拼寫檢查器新增字典。有關詳細資訊,請參閱 使用外部拼寫檢查器(請注意,本文尚未更新,但很快就會更新)。
  • nsIBrowserHistory.lastPageVisited 屬性已被移除,因為它已不再支援一段時間。
  • 幾個 IndexedDB 的內部介面已更改,以支援修訂後的 API。這不應該影響您,但以防萬一您在做一些不尋常的事情,還是值得注意。

其他值得注意的更改

  • Windows 上的所有二進位制元件都應啟用 ASLR(地址空間佈局隨機化)支援進行構建。雖然這目前不是必需的,但將來可能會,並且不啟用它會導致效能損失。
  • Firefox 7 中引入的一個正則表示式處理錯誤已被修復。這可能會改變某些正則表示式的結果,請注意這一點。
  • 您現在可以 在可啟動附加元件中動態載入和解除安裝 chrome.manifest 檔案
  • 現在支援 mouseentermouseleave 事件。