Delphi Firefox6:实现nsIProtocolHandler

Delphi Firefox6:实现nsIProtocolHandler,delphi,firefox,firefox-addon,xpcom,Delphi,Firefox,Firefox Addon,Xpcom,Firefox 6中发生了一些变化,因此我不能再通过在像@mozilla.org/network/protocol这样的合同下注册插件来添加我的nsIProtocolHandler(和nsIChannel)实现;1?name=myscheme? 我已经检查了我使用的所有接口,如果有任何更改(根据新的 UUID),但我没有收到对NSModule中getFactoryProc I列表的调用, 就像我以前做的那样。 我需要添加一个类别(比如httpstartup或其他什么吗?)还是 还有什么问题吗?

Firefox 6中发生了一些变化,因此我不能再通过在像
@mozilla.org/network/protocol这样的合同下注册插件来添加我的nsIProtocolHandler(和nsIChannel)实现;1?name=myscheme
? 我已经检查了我使用的所有接口,如果有任何更改(根据新的 UUID),但我没有收到对NSModule中getFactoryProc I列表的调用, 就像我以前做的那样。 我需要添加一个类别(比如
httpstartup
或其他什么吗?)还是 还有什么问题吗? (在Firefox3.6中运行的代码我还没有提交。) 新代码还没有……)


更新:

更新:好的,我想好了。看见基本上,您需要在模块中导出正确的kVersion值,否则库将在加载后立即卸载(即您正在观察的行为)。从Firefox5开始,这种行为是新的


如果您尚未更新到Firefox4,则需要更改注册XPCOM组件的方式。看见JS组件或二进制组件的部分取决于您的组件是用JS还是C++来实现的。我以为4是今年才发行的。他们有没有染上Chrome疾病?我不会真的称之为疾病,但是的,@David,那是。如果还有人感兴趣的话,我昨天已经发布了可以用于FF7的版本(我已经放弃了FF6,但很高兴下一个FF版本可以直接适应)再次感谢所有的帮助,我在这里我已经阅读了这一页和一个类似的数字。我在chrome.manifest中添加了更改后的
类别配置文件
,但仍然没有更改。不幸的是,我链接到的文档目前似乎有一些断开的链接。在我看来,您的组件没有正确注册。我认为这与将其添加到“更改后配置文件”类别没有任何关系。为了确认,您正在调用
XPCOMUtils.generateNSGetFactory()
来创建
NSGetFactory()
函数?从Gecko 2(即Firefox 4)开始,您不应该导出
NSGetModule()
函数。我没有使用javascript!所以我没有XPCOMUtils。我正在导出一个NSModule结构,其中填充了所需的数据,特别是
mCIDs[0]。constructorProc
,我希望在导航到
xxm://
url时调用它,并且它以前工作过。那么,您的模块注册看起来像什么?他们在Firefox 3.6和4.0之间完全改变了这一点。在Delphi中,我无法访问已定义的C宏,但我编译的二进制文件使用一个MCID和mContracts条目导出
NSModule
结构,就像这个示例一样。它与FF5配合得很好,而与FF6配合得不好,所以我猜要么是一个bug,要么是我遗漏了一个类别?