Saltar la navegación

3.2.- Modelo de registro de eventos tradicional.

Máquina registradora.
OpenClipart-Vectors (Pixabay License)


En los navegadores antiguos, el modelo que se utilizaba era el modelo en línea. Con la llegada de DHTML, el modelo se extendió para ser más flexible. En este nuevo modelo el evento pasa a ser una propiedad del elemento, así que por ejemplo los navegadores modernos ya aceptan el siguiente código de JavaScript:

elemento.onclick = hacerAlgo;  // cuando el usuario haga click en el objeto, se llamará a la función hacerAlgo()

Esta forma de registro, no fue estandarizada por el W3C, pero debido a que fue ampliamente utilizada por Netscape y Microsoft, todavía es válida hoy en día. La ventaja de este modelo es que podremos asignar un evento a un objeto desde JavaScript, con lo que ya estamos separando el código de la estructura. Fíjate que aquí los nombres de los eventos si que van siempre en minúsculas.

Para eliminar un gestor de eventos de un elemento u objeto, le asignaremos null:

elemento.onclick = null;

Otra gran ventaja es que, como el gestor de eventos es una función, podremos realizar una llamada directa a ese gestor, con lo que estamos disparando el evento de forma manual. Por ejemplo:

elemento.onclick();    // Al hacer ésto estamos disparando el evento click de forma manual y se ejecutará la función hacerAlgo()

Sin paréntesis

Fíjate que en el registro del evento no usamos paréntesis (). El método onclick espera que se le asigne una función completa. Si haces: element.onclick = hacerAlgo(); la función será ejecutada y el resultado que devuelve esa función será asignado a onclick. Pero ésto no es lo que queremos que haga, queremos que se ejecute la función cuando se dispare el evento.