2011-08-29 63 views
2

有事在Firefox 6更改,因此我可以不再仅仅通过在像@mozilla.org/network/protocol;1?name=myscheme合同登记其添加我的nsIProtocolHandler(和nsIChannel)从一个附加的实施? 我已经检查了所有我使用如有变更(由新 UUID判断)的接口,但像以前那样我没有得到我的getFactoryProc呼叫我NSModule列出, 。 我是否需要添加类别(如http-startup什么?)或者是 别的东西错了吗? (即在Firefox 3.6中工作的代码仍然是here我没有犯过 但新的代码...)火狐6:实施nsIProtocolHandler

更新:I've logged this as a bug

+1

FF6?我以为4是今年才发布的。他们患了铬病吗? –

+0

我不会真的把它称为一种疾病,但没错,@大卫,这是[在二月份宣布复出(http://www.electronista.com/articles/11/02/28/mozilla.will.update。 firefox.more.frequently /)。 –

+0

如果有人仍然有兴趣,我已经发布了昨天准备好FF7的版本http://sourceforge.net/mailarchive/forum.php?thread_name=CAHYFsWU6e2tKz%2BrJzac5VTtSH%3DZWLq3aRTqzvAFPDxSfTOGUEA%40mail.gmail.com&forum_name=xxm-releases(我已经放弃在FF6,但我很高兴下一个FF版本应该直接适应)再次感谢所有我在这里得到的帮助 –

回答

4

更新:好吧,我想通了这一点。见https://bugzilla.mozilla.org/show_bug.cgi?id=656331。基本上,您需要在模块中导出正确的kVersion值,或者库将在加载后立即卸载(即您观察的行为)。此行为是新的火狐5

的如果你还没有更新到Firefox 4还没有,那么你需要改变你注册XPCOM组件的方式。见https://developer.mozilla.org/en/XPCOM/XPCOM_changes_in_Gecko_2.0。 JS组件或二进制组件部分是相关的,取决于您的组件是以JS还是C++实现。

+0

我已阅读此页和一个像这样的数字。我在chrome.manifest中添加了'category-change-after',但仍然没有改变。 –

+0

不幸的是,我链接的文档目前似乎有一些断开的链接。这听起来像你的组件没有正确注册。我认为这与将其添加到更改后的配置文件类别无关。只需确认一下,您正在调用'XPCOMUtils.generateNSGetFactory()'来创建一个'NSGetFactory()'函数?您不应该从Gecko 2(即Firefox 4)导出'NSGetModule()'函数。 –

+0

我没有使用JavaScript!所以我没有XPCOMUtils。我正在导出一个NSModule结构,它充满了所需的数据,尤其是'mCIDs [0] .constructorProc',我希望在导航到一个'xxm://'url时被调用,并且之前有效。 –