我有一個Firefox擴展,我想移植到IE,我不想再次編寫它。將一個Firefox擴展移植到BHO(瀏覽器助手對象,也稱爲IE擴展)
有什麼可以幫助我嗎?它可能以非常不同的方式出現:
- IE瀏覽器BHO可以渲染Firefox擴展,IE瀏覽器功能映射到FF擴展所調用的瀏覽器。
- 一個生成器,需要一個FF擴展並生成一個BHO(以C,C#等任何它想要的形式)。
編輯:可能沒有這樣的事情。我會保持這個問題...
我有一個Firefox擴展,我想移植到IE,我不想再次編寫它。將一個Firefox擴展移植到BHO(瀏覽器助手對象,也稱爲IE擴展)
有什麼可以幫助我嗎?它可能以非常不同的方式出現:
編輯:可能沒有這樣的事情。我會保持這個問題...
有沒有簡單的出路。模型是非常不同的。在可能的範圍內抽象出您的核心代碼,併爲每個瀏覽器寫一次膠水。
取決於插件注入JS(並綁定即你在FF使用methodes)是一個很大的便攜式
有網站/軟件,可以使用該編譯既即單碼和FF
我們使用一個代碼庫以及我們自己的IE和FF函數之間的映射關係,最大的問題是接口稍有不同,或者有其他問題,所以你不能在瀏覽器中使用consitent方法。
您將有一個較重的幫助程序庫來使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
祝你好運!
感謝您的帖子=)我認爲我將不得不這樣做。嗯,我期待着調試階段.... – BenoitParis 2010-12-28 16:21:15
Wiki如何爲IE瀏覽器http://petesearch.com/wiki/寫BHO。祝你好運。 – 2010-11-24 12:53:25