Internet explorer 将firefox扩展移植到BHO(浏览器辅助对象,又称IE扩展)

Internet explorer 将firefox扩展移植到BHO(浏览器辅助对象,又称IE扩展),internet-explorer,firefox,firefox-addon,xul,bho,Internet Explorer,Firefox,Firefox Addon,Xul,Bho,我有一个Firefox扩展,我想移植到IE,我不想再编码了 有什么可以帮我的吗?它可能以非常不同的方式出现: 可以呈现firefox扩展的IE BHO,IE功能映射到FF扩展调用的功能 采用FF扩展并生成BHO的生成器(在C、C#等中,随需而定) 编辑:可能没有这样的事情。我会继续提问 编辑:这个问题从今天起就无关紧要了没有简单的出路。模型非常不同。尽可能地抽象核心代码,并为每个浏览器编写一次胶水。根据插件注入js(并将ie绑定到ff中使用的方法)可移植性更强 有些站点/软件可以使用编译到i

我有一个Firefox扩展,我想移植到IE,我不想再编码了

有什么可以帮我的吗?它可能以非常不同的方式出现:

  • 可以呈现firefox扩展的IE BHO,IE功能映射到FF扩展调用的功能
  • 采用FF扩展并生成BHO的生成器(在C、C#等中,随需而定)
编辑:可能没有这样的事情。我会继续提问


编辑:这个问题从今天起就无关紧要了

没有简单的出路。模型非常不同。尽可能地抽象核心代码,并为每个浏览器编写一次胶水。

根据插件注入js(并将ie绑定到ff中使用的方法)可移植性更强


有些站点/软件可以使用编译到ie和ff的单一代码。我们在一个代码库和ie与ff函数之间的映射中遇到的最大问题是接口略有不同或存在缺陷,因此无法在浏览器之间使用一致的方法

您将拥有一个更重的助手库,以使这两个接口符合您的使用要求,或者重新编写一些变通方法

由于我们首先有一个IE BHO,我们有以下类似的东西来将IE内容映射到FF,但是根据您使用的内容,您可能会发现您需要从最详细到最不详细的两种映射方式。这里有一些快速的想法给你

// Normally if you where just doing IE or FF you would use one technique for getting a different interface
// as we are mixing the code, we have macros which allows you to use a combination of code
// eg.  for IE  CComQIPtr<IHTMLDocument2> doc( disp );
// eg.  for FF  nsCOMPtr<IHTMLDocument2> doc( do_QueryInterface(disp) );
// combined in code will be CComQIPtr<IHTMLDocument2> doc( do_QueryInterface(disp) );
// FF strips off the QI,  IE strips out the do_QueryInterface.
#ifdef MOZILLA
#define CComPtr                     nsCOMPtr
#define CComQIPtr                   nsCOMPtr

#define IWebBrowser2                nsIDOMWindow
#define IHTMLWindow2                nsIBrowserDOMWindow
#define IHTMLDocument2              nsIDOMHTMLDocument

#define get_Document            GetDocument
#define get_type                    GetType
#else
// Pointer handling for nsCOMPtr vs CComPtr/CComQIPtr
#define getter_AddRefs(x)       (&(x).p)        
#define do_QueryInterface(x)        (x)
#endif
//通常情况下,如果您只使用IE或FF,您将使用一种技术获得不同的接口
//当我们混合代码时,我们有宏,允许您使用代码的组合
//例如,对于IE CCOMKIPTR文件(disp);
//例如,对于FF nsCOMPtr文件(do_QueryInterface(disp));
//代码中组合的将是CCOMKIPTR doc(do_QueryInterface(disp));
//FF去掉QI(去掉do_查询接口)。
#ifdef MOZILLA
#定义CComPtr nsCOMPtr
#定义CComQIPtr nsCOMPtr
#定义IWebBrowser2 nsIDOMWindow
#定义IHTMLWindow2 nsIBrowserDOMWindow
#定义IHTMLDocument2 nsIDOMHTMLDocument
#定义get_文档GetDocument
#定义get_类型GetType
#否则
//nsCOMPtr与CComPtr/CComQIPtr的指针处理
#定义getter_AddRefs(x)(&(x).p)
#定义do_查询接口(x)(x)
#恩迪夫
祝你好运

Wiki如何为IE编写BHO。祝你好运。谢谢你的帖子。我想我必须这样做。嗯,我期待着调试阶段。。。。