<blockquote>
L'interactivité que JS permet avec la page web repose sur un système d'<em>évènements</em>.
</blockquote>

Des évènements sont émis lorsque l'utilisateur interagit avec la page web. Chaque évènement est <em>nommé</em>
et s'applique à une <em>cible</em>. Exemples d'évènements :
* `click` correspond au clic sur un élément (par exemple un lien, un bouton).
* `submit` correspond à la soumission d'un formulaire, et ne s'applique qu'à un élément `form`.
* `change` correspond au changement de valeur d'un élément de saisie dans un formulaire, comme `input`, `select` ou `textarea`.
* `keyup` correspond au <em>relâchement</em> d'une touche dans un élément de saisie, ce qui est subtilement différent (et notamment, ne s'applique pas à un élément comme `select`).

Il est ensuite possible d'<em>écouter</em> les évènements, et d'effectuer une action lorsqu'ils surviennent.
Pour cela, on <em>attache</em> un <em>gestionnaire</em> ou <em>handler</em> à l'élément sur lequel on veut écouter un évènement.

Un handler est une fonction, qui prend en paramètre un <em>objet</em> de type `Event`, qu'on peut avoir besoin d'utiliser.

Reprenons le tout premier exemple, le bouton de la section 1.1 :

```html
<button onclick="alert('Hi!')">Click me</button>
```
On a attaché au bouton un handler pour l'évènement `click`, en l'attribuant directement dans l'attribut `onclick`.
Un élément dispose de propriétés `on*` pour chaque type d'évènement, où `*` est le nom de l'évènement.

Cette façon d'attacher un handler directement sur la balise est un peu rudimentaire : on appelle cela du JS "inline",
et ce n'est généralement pas considéré comme une bonne pratique.

A la place, on préfère attacher les handlers via du code JS. En reprenant l'exemple précédent, avec un `id` pour identifier le bouton :
```html
<button id="btn2">Click me</button>
<script>
var button = document.getElementById('btn2');
button.onclick = function() {
  alert("Je viens d'être cliqué !");
}
</script>
```
On a attaché un handler pour `click` en attribuant une fonction anonyme à la propriété `onclick`.
