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 eobjeto para usar. En ese caso, debe aprovechar la argumentscolecció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.