addEventListener es la forma de registrar un oyente de eventos, como se especifica en W3C DOM. Sus beneficios son los siguientes:
Sintaxis
target.addEventListener(tipo, listener[, useCapture]);
Esta función la tienen incorporada casi todos los objetos del DOM (recordemos nuestro árbol)
Para llamarla debemos hacerla a partir de la referencia de un objeto y pasarle tres parámetros:
-El nombre del evento que queremos capturar (load,click,unload etc.) -El nombre de la función que se dispara cuando se produce el evento. -El tercer parametro un valor boolean que por ahora le pasaremos el valor false.
Para ver como capturamos el evento load confeccionaremos el problema que ya habiamos realizado con el modelo antiguo de eventos.
<!DOCTYPE html> <html> <head> <title>Problema</title> <script> window.addEventListener('load',ventanaBienvenida,false); function ventanaBienvenida(e) { alert("Bienvenido a este sitio."); } </script> </head> <body> Este sitio utiliza el modelo de eventos propuestos por el W3C. </body> </html>
El área de javascript se verá así:
window.addEventListener('load',ventanaBienvenida,false); function ventanaBienvenida(e) { alert("Bienvenido a este sitio."); }
Lo primero que podemos observar es que no hay ninguna llamada a funciones JavaScript en el archivo HTML,
Lo más importante está ahora ubicado en el fuera de cualquier función, es decir se ejecuta cuando comienza a cargarse la página es la llamada de la función addEventListener a partir del objeto window (recordemos que este objeto se crea automáticamente):
window.addEventListener('load',ventanaBienvenida,false);
Le pasamos como referencia el evento que queremos capturar (load), debe ir entre comillas y el segundo parámetro es la función que debe ejecutarse cuando se dispare el evento load y false en el tercer parámetro.
Es importante tener en cuenta que el nombre de la función no debe llevar paréntesis de apertura y cerrado, es decir es incorrecto pasar ventanaBienvenida(), esto es debido a que en realidad no estamos llamando a la función sino estamos pasando la dirección de la función para que el objeto window la llame en su debido momento.
Donde codificamos la función debemos indicar un parámetro que contiene información útil con respecto al evento que se a disparado (si bien en este problema no lo utilizamos en otros problemas será de vital importancia)
Podemos obviar antecederle el nombre del objeto window:
addEventListener('load',ventanaBienvenida,false);