更新 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 中移除。mozISpellCheckingEngine
和nsIEditorSpellCheck
接口已更新,以允许无需重启的附加组件向拼写检查器添加字典。有关详细信息,请参阅 使用外部拼写检查器(请注意,本文尚未更新,但很快就会更新)。nsIBrowserHistory.lastPageVisited
属性已被移除,因为它已不再支持一段时间。- 几个 IndexedDB 的内部接口已更改,以支持修订后的 API。这不应该影响您,但以防万一您在做一些不寻常的事情,还是值得注意。
其他值得注意的更改
- Windows 上的所有二进制组件都应启用 ASLR(地址空间布局随机化)支持进行构建。虽然这目前不是必需的,但将来可能会,并且不启用它会导致性能损失。
- Firefox 7 中引入的一个正则表达式处理错误已被修复。这可能会改变某些正则表达式的结果,请注意这一点。
- 您现在可以 在可启动附加组件中动态加载和卸载 chrome.manifest 文件。
- 现在支持
mouseenter
和mouseleave
事件。