Firefox 6 中发生了一些变化,因此我无法再仅通过在诸如 @mozilla.org/network/protocol;1?name 之类的契约(Contract)下注册来从附加组件添加我的 nsIProtocolHandler (和 nsIChannel)实现=我的方案
?
我检查了我使用的所有接口(interface)是否有任何更改(根据新的
UUID),但我没有收到对我在 NSModule 中列出的 getFactoryProc 的调用,
就像我以前做的那样。
我是否需要添加一个类别(例如 http-startup
之类的?)或者是
还有什么问题吗?
(在firefox 3.6中工作的代码仍然是here我还没有提交
新代码尚未...)
最佳答案
更新:好的,我明白了。请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=656331 。基本上,您需要在模块中导出正确的 kVersion 值,否则库将在加载后立即卸载(即您正在观察的行为)。从 Firefox 5 开始,此行为是新的。
如果您尚未更新到 Firefox 4,那么您需要更改注册 XPCOM 组件的方式。请参阅https://developer.mozilla.org/en/XPCOM/XPCOM_changes_in_Gecko_2.0 。关于 JS 组件或二进制组件的部分是否相关取决于您的组件是用 JS 还是 C++ 实现的。
关于delphi - 火狐 6 : implementing nsIProtocolHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7236434/