更新 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 事件。