====== Activité Javascript N°2 - gérer les touches du clavier ======
===== Présentation =====
**JavaScript** permet de gérer des **événements**. Pour **chaque** événement, un **objet Event** est créé et permet d'accéder à beaucoup d'**informations sur l'événement** actuellement déclenché. Cela permet par exemple :
* lors de **l'appui** d'un touche du clavier de connaître de quelle **touche** il s'agit,
* pour la souris d'avoir les **coordonnées** du clic.
==== La gestion des touches du clavier ====
La **détection** d'une touche du clavier se fait en ajoutant un **gestionnaire d'événement** sur le **document** c'est à dire sur la **page HTML tout entière**.
// Lorsqu'une touche est appuyée, lancer une fonction
document.addEventListener('keydown', fonctionToucheEnfoncee);
// Lorsqu'une touche est relachée, lancer une fonction
document.addEventListener('keyup', fonctionToucheRelachee);
La fonction **appelée** reçoit en paramètre l'**objet Event** et peut donc accéder aux informations liées à l'événement :
// gestion de l'appui d'une touche
function fonctionToucheEnfoncee(event) {
// touche haut appuyée
if(e.keyCode == '38') {
// action à faire
}
// Gestion du relachement d'une touche
function fonctionToucheRelachee(event) {
// touche haut relachée
if(e.keyCode == '38') {
// action à faire
}
Les événements **keyup** et **keydown** capturent **toutes les frappes de touches** : les lettres, chiffres, touches de fonction, flèches, ALT, CTRL, etc.
L'événement **keypress** capture **uniquement** les touches qui **écrivent un caractère** et non pas les touches qui n'affichent pas de caractère comme CTRL, ALT, etc.
**Exemple** pour la combinaison de touche Maj + A est gérée :
* l'événement **keypress** détectera uniquement un **A majuscule**,
* les événements **keyup** et **keydown** se **déclencheront deux fois**, une fois pour la touche **Maj** et une deuxième fois pour la **touche A**.
La propriété **keyCode** de l'**objet Event** renvoie le **code ASCII** de la touche pressée. Voici quelques exemples de **touche** et de leur **code ASCII** :
^Touche^Code ASCII^
|Flèche gauche|37|
|Flèche haut|38|
|Flèche droite|39|
|Flèche bas|40|
==== Activité Les langages pour créer des sites Web ... ====
* [[isn:langageweb|Les langages pour créer des sites Web]]