将一个firefox扩展端口移植到BHO(浏览器助手对象,又称IE扩展)

时间:2010-11-24 12:49:21

标签: internet-explorer firefox firefox-addon xul bho

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

有什么东西可以帮助我吗?它可能有很多不同的方式:

  • 可以渲染firefox扩展的IE BHO,IE扩展名映射到FF扩展名调用的扩展名。
  • 一个生成器,它采用FF扩展并生成BHO(在C,C#等等,无论它想要什么)。
编辑:可能没有这样的事情。我会把问题保持开放......

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我们在一个代码库和我们自己的IE和FF函数之间的映射存在的最大问题是接口略有不同或者有其他问题,因此您不能在浏览器中使用一致的方法。

您将拥有一个更重的帮助程序库,以使2个接口适合您的使用,或者重新编写一些解决方法。

由于我们首先有一个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

祝你好运!

答案 2 :(得分:0)

取决于插入js的插件(并且绑定到你在ff中使用的方法)更便携

有些网站/软件可以使用单个代码来编译ie和ff