2010-11-24 20 views
6

Tengo una extensión para Firefox que me gustaría puerto para IE, no quiero que codificar de nuevo.puerto una extensión de Firefox a un BHO (Browser Helper Objects, también conocidos como extensiones IE)

¿Hay algo que me pueda ayudar? Podría venir de maneras muy diferentes:

  • Un IE BHO que puede representar una extensión para Firefox, con las funciones IE asignadas a las que llama la extensión FF.
  • Un generador que tiene una extensión de FF y genera un BHO (en C, C#, etc. Lo que quiera).

EDIT: Puede haber tal cosa. Voy a mantener la cuestión abierta ...

+0

Wiki cómo escribir BHO para IE http://petesearch.com/wiki/. Buena suerte. –

Respuesta

1

No hay salida fácil. Los modelos son muy diferentes. Resuma su código central en la medida que pueda, y escriba el pegamento una vez para cada navegador.

0

dependiendo del plugin de inyección de js (y obligar a decir a los metodos que se utilizan en ff) es mucho más portátil

hay sitios/software que puede utilizar un solo código que compila tanto a IE y FF

1

El mayor problema que tenemos con una base de código y nuestro propio mapeo entre las funciones IE y FF es donde las interfaces difieren ligeramente o son defectuosas por lo que no puede usar un enfoque consistente en todos los navegadores.

que o bien tienen una biblioteca de ayuda para hacer más pesado el 2 interfaces consitent para su uso, o ser re escribir algunas de las soluciones.

Como teníamos un IE BHO primero, tenemos cosas como las siguientes para asignar las cosas de IE a FF, pero dependiendo de lo que use puede encontrar que necesita asignaciones en ambos sentidos, desde la más detallada a la menos. Aquí hay algunas ideas rápidas para usted

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

¡Buena suerte!

+0

Gracias por el mensaje =) Creo que tendré que hacer esto. Mmmh espero la fase de depuración ... – BenoitParis

Cuestiones relacionadas