Cómo registrar varios métodos a un evento en JavaScript

Llevo unos días investigando como funciona todo el tema de eventos en html ya que estaba un poco oxidado en este tema. Tengo pensado escribir un artículo, pero a modo de resumen hay varias formas de asociar métodos a eventos, la recomendada por el W3C utilizando addEventListener, la propia de Explorer mediante attachEvent y la tradicional basada en la asignación de un puntero de función al evento window.load = myHandler. De todas ellas sin lugar a dudas la más recomendable es la del W3C pero tiene el problema de que por ahora funciona únicamente en Mozilla y Firefox, no siendo soportada por Explorer. El método utilizado por explorer basado en attachEvent parece no ser muy recomendable ya que adolece de diversos problemas.

Por lo tanto, al menos hasta que se generalice el uso de W3C, parece que el método más fiable es el tradicional. Sin embargo tiene una desventaja clara y es que el del W3C permite asociar varias funciones a un evento de forma directa. Hasta hace poco no se me había ocurrido como resolver esto en el modelo tradicional, pero hoy he visto en Quirksmode un modo de hacerlo.

var old = (element.onclick) ? element.onclick : function () {};
element.onclick = function (e) {old(e); spyOnUser(e)};

La primera línea almacena en old el contenido asignado al evento utilizando una función vacía si no tiene nada asignado todavía. En la segunda línea se asocia al evento onclick una función anónima formada por una llamada a old y otra llamada a la función que queríamos añadir al evento. De esta forma podríamos ir añadiendo funciones al evento tantas veces como fuera necesario.

Twitter Digg Delicious Stumbleupon Technorati Facebook Email

Los comentarios están cerrados.