|<- [[vpfjsphp:Using the exercise files]]|[[vpfjsphp:Using events with old browsers]] ->|
Le javascript éxécute habituellement le code de manière séquentielle, dans l'ordre où celui-ci est lu par le navigateur.
Les événements permettent de faire exécuter du code au navigateur lorsque ceux-ci sont //triggered// par le navigateur.
Les événement peuvent avoir lieu à n'importe quel moment, lors du chargement de la page, lorsque l'utilisateur bouge la souris au-dessus d'un élément, quand une vidéo a fini de charger ou quand un formulaire est soumis.
Si l'on souhaite qu'un ensemble de code soit exécuté lorsqu'un événement est déclenché, il est nécéssaire de le **capturer** (//capture an event//) à travers un processus appelé l'**enregistrement d'événement** (//event registration//).
Il existe plusieurs manière d'enregistrer un élément, certaines étant plus compatible que d'autre avec de vieux navigateurs.
- en utilisant des **attributs de balises** (//tag attributes//). On utilise un //event handler// (ex: onclick) comme attribut, et le code a exécuter comme valeur entre "".
- Cela est considéré comme un extrêmement mauvaise méthode, car cela rend le code difficile à tenir à jour. Il est préférable de tenir le javascript séparé du html.
- en utilisant la **dot notation**. Il s'agit de spécifier tout d'abord l'élément auquel l'événement est relié, et ensuite l'événement que l'on souhaite suivre (//track//). Lorsque l'événement est détecté, le code est exécuté.
- La manière la plus simple d'obtenir une référence à un élément est via un attribut id et la méthode document.getElementById() (//DOM selection method//).
document.getElementById('mon_id').onclick=function(){
// du code au sein d'une fonction anonyme
}
- Une manière plus moderne est d'utiliser la méthode **addEventListener()** qui peut être utilisée sur n'importe quel élément sur la page. Elle peut beaucoup ressembler à la //dot notation//.
- elle demande un élément, le type d'événement, une fonction ainsi qu'un troisième paramètre, un booléen appelé **type de propagation** (propagation type).
- Cette méthode est très puissante.
document.getElementById('mon_id').addEventListener('', function() { /* du code au sein d'une fonction anonyme */}, );
- Cette méthode permet aussi à des éléments ne faisant pas parti du DOM de déclencher des événements. **Il est donc possible de créer ses propres événements, et de les écouter**.
- un des désavantages de cette méthode est qu'elle n'est pas supportée par IE8 et d'autres navigateurs anciens.
- Les anciens navigateurs peuvent supporter une autre méthode d'attachement d'événements.