Hola:
La verdad es que cada vez hay menos diferencias entre navegadores, pero los más frecuentes son entre explorer y el resto...
El caso de Opera es bastante curioso, porque en muchos casos implementa los códigos de explorer y de las estándares.
Hace años se discriminaba consultando la existencia del objeto document.all, y también existe en Opera, pero suele ser suficiente.
Un caso es la asignación dinámica de métodos asociados a eventos que en los navegadores estándares es addEventListener(), y la versión para explorer es attachEvent()...
if (document.all) boton.attachEvent("onclick", metodoOnclick);
else boton.addEventListener("click", metodoOnclick, false);
Como puede verse, la forma de asignar los eventos no permite los parámetros, así que no se puede usar el objeto this, por lo que debe obtenerse el elemento que produjo el evento... otra cosa que debe discriminarse... en explorer es event.srcElement, y en mozilla debe consultarse el atributo target del parámetro "ficticio"...
function metodoOnclick(e) {
function procesar(x) {// x equivaldría al objeto this
// aquí el verdadero código asociado el elemento x
}
if (document.all) procesar(event.srcElement);
else procesar(e.target);
}
Si alguna de estas afirmaciones no es correcta, espero que se proponga una versión mejor.
Saludos