Vous pouvez me contacter via Facebook pour questions & suggestions :
Page Facebook relative à mon site
JavaScript est un langage évènementiel : il détecte un évènement qui survient et lance un traitement.
Un évènement est quelque chose qui se produit dans le navigateur mais ce peut être aussi une action du visiteur.
Le clic ("click" en anglais) est l'évènement le plus courant mais il y en a bien d'autres ...
Digression orthographique : on peut écrire le mot évènement de deux façons : le deuxième e accentué peut être "é" (orthographe ancienne) ou "è" (orthographe nouvelle qui fait coïncider la graphie avec la prononciation). Il en est de même pour le terme "évènementiel".
Cette liste n'est pas exhaustive.
Il existe d'autres événements mais qui sont très rarement utilisés car peu connus.
À l'origine les événements étaient détectés par le HTML (mais traités via JS).
On utilisait en effet les attributs évènementiels du HTML. On parle aussi de "gestion évènementielle en ligne".
Pour créer un attribut évènementiel il suffit de préfixer par "on" l'évènement.
On obtient ainsi les attributs : onclick, onfocus, onchange, oninput, onchange, etc.
La notation "camelCase" des attributs évènementiels n'est pas obligatoire ni souhaitable ; en clair
écrivez toutes les lettres en minuscule.
Rendu d'un document HTML :
Notez les attributs évènementiels pour l'élément IMG : onmouseover, onclick, ondblclick, onmouseout.
Cette technique de détection des événements est obsolète mais toujours comprise par les navigateurs.
Ne confondez pas l'évènement ("click", par exemple) avec l'attribut qui détecte ledit évènement ("onclick" dans ce cas).
function f1() {image.src ='../images/femme_normale.jpg' ; }
function f2() {image.src ='../images/femme_maigre.jpg' ; }
function f3() {image.src ='../images/squelette.jpg' ; }
function f4() {image.src ='../images/femme_grosse.jpg' ; }
La gestion des évènements en ligne présente un gros inconvénient : mélange de HTML & JS dans la partie BODY ce qui rend le code difficile à lire et donc à maintenir.
À la place de la gestion des événéments de HTML on peut utiliser le gestionnaire d'évènements de JavaScript ;
Cette solution offre un gros avantage : plus de "scories" JS dans la partie BODY de la page ;
la totalité du code JavaScript peut être centralisée dans le script.
Rendu d'un document HTML dans un Iframe :
Plus aucune "scorie" JS dans la code de la partie BODY ; uniquement du HTML !
L'élément BODY identifié "page" et l'élément DIV est identifié "boite".
La détection des évènements et les traitements qui en découlent sont dans le script.
Le code de ce script :
Rappel : le script est délimité par le conteneur SCRIPT qui se situe après la balise </body>
// référencer dans le script des éléments de la page :
var page = document.querySelector('body') ;
var boite = document.getElementById('boite') ;
// systématiquement des fonctions anonymes :
page.onload = function()
{boite.style.backgroundImage ='url(../images/burkini.jpg )' ; }
boite.onmouseover = function()
{boite.style.backgroundImage ='url(../images/bikini2.jpg )' ; }
boite.onclick = function()
{boite.style.backgroundImage = 'url(../images/seins_nus.jpg )' ; }
boite.ondblclick = function()
{boite.style.backgroundImage = 'url(../images/jolie_fille.jpg )' ; }
boite.onmouseout = function()
{boite.style.backgroundImage ='url(../images/squelette.jpg )' ; }
page.onkeydown = function()
{boite.style.backgroundImage ='url(../images/brune_nue.jpg )' ; }
page.onkeyup = function()
{boite.style.backgroundImage = 'url(../images/black_nue.jpg )' ; }
Les évènements sont détectés par JS selon la méthode dite "onEvent" ; méthode intitulée ainsi car toutes les propriétés sont construites selon la syntaxe "on" + évènement.
Actualiser la page consiste à la recharger donc l'évènement load se produit.
Il existe désormais une solution JavaScript plus récente et qui est à priviligier :
la méthode addEventListener() (écoute d'évènement).
Les deux méthodes décrites précédemment (gestion via le HTML et gestion JS dite "onevent") sont considérées
comme obsolètes mais sont toujours (heureusement) comprises par les navigateurs.
Suite à un clic sur un bouton de commande le visiteur peut saisir son nom et en retour il y a affichage
d'un message de bienvenue.
Nous allons traiter ce thème avec deux méthodes JS : onEvent puis addEventListener.
document.querySelector('button').onclick = function()
{
var nom = prompt('tapez votre nom') ;
document.write("bonjour " + nom );
}
var bouton = document.querySelector('button');
bouton.addEventListener('click', bonjour);
function bonjour(event)
{
var nom = prompt('tapez votre nom') ;
document.write("bonjour " + nom );
document.write('
' + event.type);
document.write('
' + event.currentTarget);
}
Le script est plus long mais retourne beaucoup plus d'informations grâce au passage en argument d'un objet de type "event".
Attention à la syntaxe : notez que le premier argument de la méthode addEvenListener() est "click" (et non "onclick")
et que le deuxième argument est le nom de la fonction sans parenthèses
Affichage du type d'évènement et l'élément concerné par l'évènement.
L'emploi de la méthode addEventListener donne la possibilité d'associer pour un même élément et pour le même évènement
plusieurs fonctions. C'est ce que je montre dans l'exemple ci-dessous : trois fonctions associées à un clic sur le bouton de commande.
Cette gestion multiple d'évènements est impossible avec les méthodes anciennes de détection.