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!
Wiki cómo escribir BHO para IE http://petesearch.com/wiki/. Buena suerte. –