【问题标题】:Port a firefox extension to a BHO (Browser Helper Objects, aka IE extensions)将 firefox 扩展移植到 BHO(Browser Helper Objects,又名 IE 扩展)
【发布时间】:2010-11-24 12:49:21
【问题描述】:

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

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

  • 一个 IE BHO,可以渲染一个 firefox 扩展,IE 函数映射到 FF 扩展调用的函数。
  • 采用 FF 扩展并生成 BHO 的生成器(在 C、C# 等中随心所欲)。

编辑:可能没有这样的事情。我会保持这个问题的开放......

编辑:问题与今天无关

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我们在使用一个代码库以及我们自己在 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
    

    祝你好运!

    【讨论】:

    • 感谢您的帖子 =) 我想我必须这样做。嗯,我期待调试阶段....
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-08-08
      • 2021-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多