为 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 的附加组件,如果已安装,将继续正常工作。请确保您通过实际移除并重新安装附加组件来测试您的附加组件,以确保更新后使用安装清单进行安装可以正常工作。