為 Firefox 3.6 更新擴充套件

本文為擴充套件開發者提供了關於如何正確更新其擴充套件以相容 Firefox 3.6 的有用資訊。

使用者介面更改

右鍵點選元素(包括連結和圖片)不再提供“屬性”選單項。 屬性對話方塊對大多數使用者沒有用處,已被移除。如果您的擴充套件以任何方式與該選單項互動,您將需要修改程式碼自行新增,或直接貢獻自己的上下文選單項。

附加元件包更改

為了能夠在附加元件停用時也顯示其圖示,Gecko 1.9.2 添加了對自動檢測並使用位於附加元件根目錄下的名為 icon.png 的圖示的支援。如果附加元件被停用,或者清單中缺少 iconURL 條目,則會使用此圖示。

HTML 5 合規性改進

DOM Level 2 對 HTML 和 XHTML 文件的檢視已根據 HTML 5 進行統一。

  • localName DOM 屬性現在返回 HTML 元素節點的名稱(小寫)。之前,在 HTML 文件中,它返回的是大寫。(DOM Level 1 的 tagName 在 HTML 文件中繼續返回大寫。)
  • namespaceURI DOM 屬性現在會在 HTML 元素節點上返回 "http://www.w3.org/1999/xhtml"。之前,在 HTML 文件中,它返回的是 null
  • 在 HTML 文件中,document.createElementNS(null, "FOO") 不再建立 HTML 元素節點。在 HTML 文件中,document.createElement("FOO")document.createElementNS("http://www.w3.org/1999/xhtml", "foo") 仍然有效。
  • XPath 中的 namelocal-name 函式返回 HTML 元素的名稱(小寫)。之前,在 HTML 文件中,它們返回的是大寫。

最可能遇到的升級問題是模式 if (elt.localName === "FOO")

示例:測試一個元素是否為 HTML img 元素

Firefox 3.6,同時支援 text/html 和 application/xhtml+xml

if (elt.localName === "img" && elt.namespaceURI === "http://www.w3.org/1999/xhtml")

Firefox 3.5 和 3.6,僅支援擴充套件提供的 text/html,不包含外部(例如 SVG)指令碼插入的元素

if (elt.tagName === "IMG")

Firefox 3.5 和 3.6,同時支援 text/html 和 application/xhtml+xml

if (elt instanceof HTMLImageElement)

contents.rdf 不再受支援

Gecko 1.9.2 中已移除對過時的 contents.rdf 註冊 chrome 方法的支援,Firefox 3.6 不再支援。這意味著使用 contents.rdf 的附加元件將無法安裝。

確保您的 XPI 中包含 chrome.manifest

注意:已使用舊的 contents.rdf 方法註冊 chrome 的附加元件,如果已安裝,將繼續正常工作。請確保您透過實際移除並重新安裝附加元件來測試您的附加元件,以確保更新後使用安裝清單進行安裝可以正常工作。