2010-11-24 31 views
6

J'ai une extension Firefox que je voudrais porter sur IE, je ne veux pas le coder à nouveau.Port une extension firefox à un BHO (Objets Browser Helper, alias extensions IE)

Y at-il quelque chose qui peut m'aider? Il peut se présenter de manière très différente:

  • Un IE BHO pouvant rendre une extension firefox, avec des fonctions IE mappées à celles que l'extension FF appelle.
  • Un générateur qui prend une extension FF et génère un BHO (en C, C#, etc ...).

EDIT: Il n'y a peut-être rien de tel. Je vais garder la question ouverte ...

+0

Wiki comment écrire BHO pour IE http://petesearch.com/wiki/. Bonne chance. –

Répondre

1

Il n'y a pas de sortie facile. Les modèles sont très différents. Résumé votre code de base dans la mesure où vous le pouvez, et écrire la colle une fois pour chaque navigateur.

0

en fonction du plug-in injection js (et lier à-dire aux Methodes que vous utilisez dans ff) est beaucoup plus portable

il y a des sites/logiciels qui peuvent utiliser le code unique qui compile les deux à iE et suivants

1

Le plus gros problème que nous avons avec une base de code et notre propre mappage entre les fonctions IE et FF est que les interfaces diffèrent légèrement ou sont buggées de sorte que vous ne pouvez pas utiliser une approche cohérente à travers les navigateurs.

Vous aurez soit une bibliothèque d'assistance plus lourde pour rendre les 2 interfaces compatibles avec votre utilisation, soit réécrire certaines des solutions de contournement. Comme nous avions d'abord un IE BHO, nous avons des choses comme la suivante pour mapper les choses IE à FF, mais selon ce que vous utilisez, vous pouvez trouver que vous avez besoin de mappages des deux les plus détaillées au moins. Voici quelques idées pour vous

// 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 

Bonne chance!

+0

Merci pour le post =) Je pense que je vais devoir le faire. Mmmh j'ai hâte à la phase de débogage .... – BenoitParis