Movatterモバイル変換


[0]ホーム

URL:


Aller au contenu
Wikilivres
Rechercher

Programmation JavaScript/Évènement

Un livre de Wikilivres.
<Programmation JavaScript
Fonctions utilisateurFonctions utilisateur
Objets prédéfinisObjets prédéfinis
  1. Introduction
    Programmer en deux minutes
  2. Outils de développement
  3. Syntaxe
    1. Ligne d'instruction
    2. Ordre d'évaluation
    3. Bloc d'instructions
    4. Identificateurs
    5. Expression littérale
    6. Commentaire
    7. Mots réservés
    8. Variables
    9. Opérateurs
    10. Structures de contrôle
    11. Exceptions et erreurs
    12. Fonctions utilisateur
    13. Évènement
  4. Objets prédéfinis
    1. window
    2. document
    3. navigator
    4. Array
    5. Boolean
    6. Date
    7. Error
    8. Function
    9. Math
    10. Number
    11. Object
    12. String
    13. Element
    14. RegExp
  5. Fonctions prédéfinies
  6. Programmation avancée
    1. Opérateurs de bits
    2. Fermeture
    3. Programmation objet
    4. Notation JSON
    5. AJAX
    6. Stockage
    7. Générateurs
    8. Interface DOM
    9. Objets Microsoft
  7. Frameworks
    1. Dojo
      Hello World
      Widgets
      Ressources
    2. jQuery
    3. Node.js
    4. React.js
  8. Bibliothèques
    1. Datatables
  9. Tests
    1. Ava
    2. Jest
    3. Cypress
  10. Débogage
  11. Erreurs connues
  12. Références

Fonctions utilisateurFonctions utilisateur
Objets prédéfinisObjets prédéfinis

Lesévénements JavaScript permettent d'intercepter les changements d'états de l'environnement provoqués par le documentHTML, lesscripts ou l'interaction du client.

L'objet Event

[modifier |modifier le wikicode]

Lorsqu'un événement survient, un objet Event permettant de le décrire est créé. Il se propage alors dans l'arbreDOM selon trois phases déterminées par la cible (l'objet depuis lequel l’événement est intercepté) :

  • Capture : l'événement se propage de la racine du document (incluse) à la cible (exclue).
  • Cible : l'événement atteint la cible.
  • Bouillonnement : l'événement se propage dans le sens inverse : de la cible (exclue) à la racine du document (incluse).

Cet objet a été défini par leW3C, mais malheureusementInternet Explorer en a sa propre définition ce qui oblige ledéveloppeur à tenir compte dunavigateur.

Certaines propriétés de cet objet concernent tous les types d'événements et d'autres, tels que le bouton de la souris, sont spécifiques à un ou plusieurs événements. Seules les premières nous intéressent dans cette partie, nous verrons les autres dans la description des événements.

type

[modifier |modifier le wikicode]

Identique sous Internet Explorer.

Renvoie le type d’événement (onkeydown, onload...).

target

[modifier |modifier le wikicode]

Équivalent Internet Explorer :srcElement.

Permet de récupérer l'élément depuis lequel l’événement a été envoyé. Il ne s'agit pas forcément de celui auquel on associe la fonction, mais de l'élément qui a récupéré le focus ou qui le récupère au moment de l'action. Par exemple, lors du clique de la souris sur un bouton, c'est ce bouton qui est renvoyé. Ou bien lorsque l'on appuie sur une touche du clavier, c'est l'objet qui a le focus qui est renvoyé.

currentTarget

[modifier |modifier le wikicode]

Non supporté par Internet Explorer.

Permet de récupérer l'objet auquel l’événement a été rattaché. Équivaut à utiliser la référence this qui fonctionne dans certain cas sous Internet Explorer.

stopPropagation

[modifier |modifier le wikicode]

Équivalent Internet Explorer : l'attributcancelBubble.

Cette méthode arrête la propagation de l'événement dans l'arbreDOM après le nœud sur lequel il se trouve. Il faut faire attention au fait qu'il s'agisse d'une méthode dans le W3C mais d'un attribut sous Internet Explorer.

preventDefault

[modifier |modifier le wikicode]

Équivalent Internet Explorer : l'attributevent.returnValue = false.

Empêche l'action normalement prévue de se dérouler. Par exemple, lors de l'appui sur la touche tabulation dans un champ texte, cela annulera le changement de focus et permettra l'insertion d'une indentation. Il est préférable d'utiliser l'expression"return false;" (sauf pour Internet Explorer) qui est mieux supportée.

Gestionnaires d’événements DOM-0

[modifier |modifier le wikicode]

Chaque événement peut être capté par les objets HTML concernés en leurs associant une fonction ou une commande JavaScript. Nous verrons plus loin comment fonctionnent les écouteurs (gestionnaires d'événements DOM-2). Ici nous utiliserons le type de gestionnaire d’événement DOM-0, plus simple et plus fiable : les événements sont des méthodes (le nom de l’événement avec le préfixe "on") qu'il suffit de définir. Ces méthodes peuvent prendre en paramètre un objet Event qui permettra de contrôler l'événement. Cependant, ce paramètre n'est pas toujours nécessaire.

Il existe deux façons de définir les événements :

1. Directement dans la balise de l'objet concerné :

L'appuie sur le bouton "bt" envoie un message avec son id :
<FORM><INPUTtype="button"id="bt"onclick="alert('Vous avez cliqué sur '+this.id+'.');"></FORM>

La commande peut aussi être une fonction que vous avez vous-même définie ultérieurement.

2. En associant une fonction via JavaScript :

Le même effet est obtenu différemment :
<FORM><INPUTtype="button"id="bt"></FORM>

La fonction javascript est définie après :

document.getElementById("bt").onclick=function(event){alert("Vous avez cliqué sur "+this.id+".");}

Le paramètre Event n'est pas accessible avec Internet Explorer, il faut donc passer par la variable globale window.event. Autrement, il suffit de récupérer l'instance de l'Event en paramètre de la fonction.

//Capture la touche de clavier enfoncéedocument.onkeydown=function(event){//Internet Explorer ne prend pas d'objet Event en paramètre, il faut donc aller le chercher dans l'objet windowif(typeofevent=="undefined")event=window.event;}

Écouteurs d'événements

[modifier |modifier le wikicode]

Il est possible d'intercepter le flux d’événements dans l'arbre DOM avec des écouteurs d’événements. Pour ajouter un écouteur à un objet HTML il suffit d'utiliser la méthode addEventListener. Cet écouteur peut-être supprimé avec removeEventListener. Il s'agit du type de gestionnaire d’événement DOM-2.

addEventListener

[modifier |modifier le wikicode]

Équivalent Internet Explorer :attachEvent;

Cette méthode crée un écouteur pour un objet HTML. Il prend trois paramètres :

  • type : le type d’événement. Le suffixe "on" n'est requis que pour Internet Explorer.
  • EventListener : la fonction appelée lors de l’événement.
  • useCapture :true pour la phase de capture etfalse pour celles de la cible et du bouillonnement. Ce paramètre n'est pas disponible sous Internet Explorer qui ne traite que la cible et le bouillonnement.

Le mot clé this n'est hélas pas reconnu dans cette méthode, c'est pourquoi il est préférable d'utiliser le gestionnaire d’événement DOM-0.

Lors de l'appui sur le bouton "my_button", on affiche le type d'évènement la cible courante et on efface l'écouteur de sorte que cette action ne s'effectue qu'une seule fois.
functionclickMe(event){//this.id renvoie "undefined" : this n'est pas reconnu icialert("Type : "+event.type+"\nCible courante : "+this.id);if(navigator.appName=="Microsoft Internet Explorer"){//Ne fonctionne pas : this n'est pas reconnu icithis.detachEvent("onclick",clickMe);}else{this.removeEventListener("click",clickMe,false);}}if(navigator.appName=="Microsoft Internet Explorer"){document.getElementById("my_button").attachEvent("onclick",clickMe);}else{document.getElementById("my_button").addEventListener("click",clickMe,false);}

removeEventListener

[modifier |modifier le wikicode]

Équivalent Internet Explorer :detachEvent;

Pour détruire un écouteur, il faut utiliser cette méthode avec les mêmes paramètres que addEventListener (ou detachEvent).

Événements

[modifier |modifier le wikicode]

onabort

[modifier |modifier le wikicode]

En cas d'interruption de chargement d'une image.

Objets concernés : Image.

onblur

[modifier |modifier le wikicode]

Lorsque l'utilisateur quitte l'objet et que celui-ci perd le focus.

Objets concernés : Button, Checkbox, FileUpload, Layer, Password, Radio, Reset, Select, Submit, Text, TextArea et window.

onchange

[modifier |modifier le wikicode]

Lorsque l'utilisateur quitte l'objet après l'avoir modifié et que celui-ci perd le focus.

Objets concernés : FileUpload, Select, Submit, Text et TextArea.

Exemple de récupération de la valeur :

 let select = document.querySelector('#my_select_id'); let selectedOption = select[select.value]; console.log(selectedOption.text);

onclick

[modifier |modifier le wikicode]

Lors d'un clique de souris sur l'objet.

Objets concernés : Button, document, Checkbox, Link, Radio, Reset, Select et Submit.

ondblclick

[modifier |modifier le wikicode]

Lors d'un double clique de souris sur l'objet.

Objets concernés : Button, document, Checkbox, Link, Radio, Reset, Select et Submit.

onerror

[modifier |modifier le wikicode]

Survient lors d'une erreur de chargement.

Objets concernés : Image et window.

onfocus

[modifier |modifier le wikicode]

Lorsque l'objet est sélectionné et prend le focus.

Objets concernés : Button, Checkbox, FileUpload, Layer, Password, Radio, Reset, Select, Submit, Text, TextArea et window.

onkeydown

[modifier |modifier le wikicode]

Lorsqu'on appuie sur une touche. Pour tous les évènements clavier, Event a pour attribut keyCode (Internet Explorer) ou which (Netscape) et contient le code de la touche enfoncée.

Dans cet exemple un message envoie le code de la touche appuiée :
document.onkeydown=function(event){//On vérifie le navigateurif(navigator.appName==="Microsoft Internet Explorer"){//On envoie un message avec la touche appuyée pour Internet Exploreralert(event.keyCode);}else{//On envoie un message avec la touche appuyée pour Netscapealert(event.which);}}


Objets concernés : document, Image, Input (type=file, password ou text), Link et TextArea.

onkeypress

[modifier |modifier le wikicode]

Lorsqu'on maintient une touche appuyée. Pour tous les événements clavier, Event a pour attribut keyCode (Internet Explorer) ou which (Netscape) et contient le code de la touche enfoncée.

Objets concernés : document, Image, Link et TextArea.

onkeyup

[modifier |modifier le wikicode]

Lorsqu'on relâche sur une touche. Pour tous les événements clavier, Event a pour attribut keyCode (Internet Explorer) ou which (Netscape) et contient le code de la touche enfoncée.

Objets concernés : document, Image, Link et TextArea.

onload

[modifier |modifier le wikicode]

Lors du chargement de la page HTML, d'une frame ou d'une image.

Objets concernés : Image, Layer et window.

onunload

[modifier |modifier le wikicode]

En quittant le fichier. L'objet Event ne subit pas la phase de bouillonnement avec onunload.

Objet concerné : window.

onmousedown

[modifier |modifier le wikicode]

En maintenant une touche de la souris appuyée.

Les attributs de Event pour la souris sont les suivants :

  • pageX (Netscape) ou x (Internet Explorer) : position horizontale de la souris. Sous Netscape, le défilement du document n'est pas pris en compte.
  • pageY (Netscape) ou y (Internet Explorer) : position horizontale de la souris. Sous Netscape, le défilement du document n'est pas pris en compte.
  • which (Netscape) ou button (Internet Explorer) : bouton de la souris enfoncé, relâché ou maintenu. Avec which, le clique gauche renvoie 1, le milieu renvoie 2 et le droit renvoie 3. Avec button (sous Internet Explorer), le clique gauche renvoie 0, le milieu renvoie 4 et le droit renvoie 2.
Lorsque l'on clique avec la souris un message apparaît avec la position de la souris et le bouton cliqué :
document.onmousedown=function(event){//Netscapeif(navigator.appName!="Microsoft Internet Explorer"){alert(event.pageX+" - "+event.which);}//Internet Explorerelse{alert(window.event.x+" - "+window.event.button);}}

Objets concernés : Button, document et Link.

onmouseup

[modifier |modifier le wikicode]

En relâchant une touche de la souris. Pour les attributs de Event voironmousedown.

Objets concernés : Button, document et Link.

onmousemove

[modifier |modifier le wikicode]

En bougeant la souris. Pour les attributs de Event voironmousedown.

Objets concernés : window et document

onmouseout

[modifier |modifier le wikicode]

En quittant l'élément avec la souris.

Objets concernés : Area, Layer et Link. Pour les attributs de Event voironmousedown.

onmouseover

[modifier |modifier le wikicode]

En passant sur l'élément avec la souris.

Objets concernés : Area, Layer et Link. Pour les attributs de Event voironmousedown.

onselect

[modifier |modifier le wikicode]

En sélectionnant du texte.

Objets concernés : text et Textarea.

onreset

[modifier |modifier le wikicode]

Lors de l'initialisation du formulaire.

Objet concerné : form.

onsubmit

[modifier |modifier le wikicode]

En envoyant le formulaire

Objets concernés : form

onresize

[modifier |modifier le wikicode]

Lors du redimensionnement du fichier.

Objet concerné : window.

onmove

[modifier |modifier le wikicode]

Lors du déplacement du fichier.

Objet concerné : window.

dragdrop

[modifier |modifier le wikicode]

Lors d'un glisser-déposer vers la fenêtre.

Objet concerné : window.

javascript

[modifier |modifier le wikicode]

Lorsqu'un lien est activé.

Objets concernés : Link

Récupérée de "https://fr.wikibooks.org/w/index.php?title=Programmation_JavaScript/Évènement&oldid=697944"
Catégorie :

[8]ページ先頭

©2009-2025 Movatter.jp