Hay dos formas de obtener el objeto de evento desde una función:
- El primer argumento, en un navegador compatible con W3C (Chrome, Firefox, Safari, IE9 +)
- El objeto window.event en Internet Explorer (<= 8)
Si necesita admitir navegadores heredados que no siguen las recomendaciones del W3C, generalmente dentro de una función usaría algo como lo siguiente:
function(e) {
var event = e || window.event;
[...];
}
que verificaría primero uno, y luego el otro y almacenaría el que se encontrara dentro de la variable de evento. Sin embargo, en un controlador de eventos en línea no hay un e
objeto para usar. En ese caso, debe aprovechar la arguments
colección que siempre está disponible y se refiere al conjunto completo de argumentos pasados a una función:
onclick="var event = arguments[0] || window.event; [...]"
Sin embargo, en términos generales, debe evitar los controladores de eventos en línea si necesita algo complicado como detener la propagación. Escribir sus manejadores de eventos por separado y adjuntarlos a elementos es una idea mucho mejor a mediano y largo plazo, tanto para facilitar la lectura como para el mantenimiento.