Maison interface Web js tutoriel Explication détaillée du flux d'événements et des gestionnaires d'événements en JavaScript (tutoriel graphique)

Explication détaillée du flux d'événements et des gestionnaires d'événements en JavaScript (tutoriel graphique)

May 21, 2018 pm 01:47 PM
javascript js 事件

Le flux d'événements fait référence à l'ordre dans lequel les événements sont reçus de la page, tandis que le gestionnaire d'événements gère la réponse à l'événement. Ensuite, nous expliquerons en détail le flux d'événements et le gestionnaire d'événements en JavaScript

<.>Flux d'événements : il existe deux types. Les IE sont un flux bouillonnant d'événements. L'événement est reçu de l'élément le plus spécifique au début et propagé vers des nœuds moins spécifiques (Élément -> Document). Le contraire est le flux de capture d'événements de Netscape.

Les événements de niveau DOM2 stipulent que le flux d'événements comprend trois étapes : l'étape de capture d'événement, l'étape cible et l'étape de bouillonnement d'événement.

Dans la plupart des cas, les gestionnaires d'événements sont ajoutés à la phase bouillonnante du flux d'événements. Un exemple d'EventUtil :

var EventUtil = {
  addHandler: function(element, type, handler){
    if(element.addEventListener){
      element.addEventListener(type, handler, false);
    }else if(element.attachEvent){
      element.attachEvent(&#39;on&#39; + type, handler); // IE8
    }else{
      element[&#39;on&#39; + type] = handler;
    }
  },
  removeHandler: function(){...}
}
Copier après la connexion
Regardons-le en détail :

Gestionnaire d'événements de niveau DOM0La manière traditionnelle de spécifier un gestionnaire d'événements via Javascript est de Fonction affecté à une propriété de gestionnaire d’événements. Chaque élément possède ses propres attributs de gestionnaire d'événements, qui sont généralement tous en minuscules, comme onclick. En définissant la valeur de cette propriété sur une fonction, vous pouvez spécifier un gestionnaire d'événements.

var btn = document.getElementById(&#39;myBtn&#39;);
// 添加事件处理程序
btn.onclick = function () {
  alert( this );//为DOM元素btn
};
// 移除事件处理程序
btn.onclick = null;
Copier après la connexion
Avantages : 1. Simple 2. Présente des avantages multi-navigateurs

Inconvénients : les gestionnaires d'événements ne sont pas spécifiés avant l'exécution du code, ces codes sont donc derrière les boutons de la page, là Il se peut qu'il n'y ait aucune réponse, quelle que soit la façon dont vous cliquez pendant un certain temps, et l'expérience utilisateur se détériorera.

Le gestionnaire d'événements au niveau DOM2 définit deux méthodes pour gérer les opérations de spécification et de suppression des gestionnaires d'événements : addEventListener() et removeEventListener(). Trois paramètres, 1. Le nom de l'événement à traiter. 2. Une fonction de gestionnaire d'événements. 3. Une valeur booléenne. La dernière valeur booléenne est true, ce qui signifie que le gestionnaire d'événements est appelé pendant la phase de capture, et false, ce qui signifie que le gestionnaire d'événements est appelé pendant la phase de bouillonnement.

// 添加多个事件处理程序
var btn = document.getElementById(&#39;myBtn&#39;);
btn.addEventListener(&#39;click&#39;,function (){
  alert( this );// 为DOM元素btn
},false );
btn.addEventListener(&#39;click&#39;,function () {
  alert(&#39;Hello World&#39;);
},false);

// 移除事件处理程序
btn.removeEventListener(&#39;click&#39;,function () {
  // 匿名函数无法被移除,移除失败
},false);
  // 改写
  var handler = function () {
  alert(this.id);
  };
  btn.addEventListener(&#39;click&#39;,handler,false);
  // 再次移除事件处理程序
  btn.removeEventListener(&#39;click&#39;,handler,false);// 移除成功
Copier après la connexion
Ces deux gestionnaires d'événements se déclencheront dans l'ordre dans lequel ils sont ajoutés. Dans la plupart des cas, des gestionnaires d'événements sont ajoutés à la phase de bouillonnement du flux d'événements, afin de maximiser la compatibilité avec les différentes versions de navigateurs.

Avantages : plusieurs gestionnaires d'événements peuvent être ajoutés à un seul élément.

Inconvénients : les navigateurs IE8 et inférieurs ne prennent pas en charge les gestionnaires d'événements de niveau DOM2. (Y compris IE8)

Le gestionnaire d'événements IE définit deux méthodes, similaires à celles ci-dessus : attachEvent(), detachEvent(). Les deux méthodes reçoivent les deux mêmes paramètres : le nom du gestionnaire d'événements et la fonction du gestionnaire d'événements. Étant donné qu'IE8 et les navigateurs antérieurs ne prennent en charge que le bouillonnement d'événements, les gestionnaires d'événements ajoutés via detachEvent() seront ajoutés à la phase de bouillonnement.

var btn = document.getElementById(&#39;myBtn&#39;);
btn.attachEvent(&#39;onclick&#39;, function(){
  alert( this );// window
});
btn.attachEvent(&#39;onclick&#39;, funciton(){
  alert("HELLO, WORLD");
});
Copier après la connexion
Lorsque vous cliquez sur le bouton, l'ordre de déclenchement de ces deux gestionnaires d'événements est exactement l'opposé de celui ci-dessus. Au lieu de déclencher les gestionnaires d’événements dans l’ordre dans lequel ils ont été ajoutés, c’est bien le contraire.

Avantages : plusieurs gestionnaires d'événements peuvent être ajoutés à un seul élément.

Inconvénients : ne prend en charge qu'IE.

Gestionnaire d'événements multi-navigateurs

par exemple :

var EventUtil = {
  addHandler : function ( ele, type, handler ) {
    if ( ele.addEventListener ) {
      ele.addEventListener( type, handler, false );
    } else if ( ele.attachEvent ) {
      ele.attachEvent( &#39;on&#39; + type, handler );
    } else {
      ele[&#39;on&#39; + type] = handler
    }
  },
  removeHandler: function ( ele, type, handler ) {
    if ( ele.removeEventListener ) {
      ele.removeEventListener( type, handler, false );
    } else if ( ele.detachEvent ) {
      ele.detachEvent( &#39;on&#39; + type, handler );
    } else {
      ele[ &#39;on&#39; + type ] = null;
    }
  }
}
Copier après la connexion
Ce qui précède est ce que j'ai compilé pour vous, j'espère qu'il vous sera utile. vous à l'avenir.

Articles associés :

Conseils JavaScript de base (tutoriels image et texte, réponses détaillées pour vous)

Parcours des valeurs dans la collection EL expression List en javascript

Analyse détaillée et analyse du principe de fonctionnement JavaScript

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Recommandé : Excellent projet de détection et de reconnaissance des visages open source JS Recommandé : Excellent projet de détection et de reconnaissance des visages open source JS Apr 03, 2024 am 11:55 AM

La technologie de détection et de reconnaissance des visages est déjà une technologie relativement mature et largement utilisée. Actuellement, le langage d'application Internet le plus utilisé est JS. La mise en œuvre de la détection et de la reconnaissance faciale sur le front-end Web présente des avantages et des inconvénients par rapport à la reconnaissance faciale back-end. Les avantages incluent la réduction de l'interaction réseau et de la reconnaissance en temps réel, ce qui réduit considérablement le temps d'attente des utilisateurs et améliore l'expérience utilisateur. Les inconvénients sont les suivants : il est limité par la taille du modèle et la précision est également limitée ; Comment utiliser js pour implémenter la détection de visage sur le web ? Afin de mettre en œuvre la reconnaissance faciale sur le Web, vous devez être familier avec les langages et technologies de programmation associés, tels que JavaScript, HTML, CSS, WebRTC, etc. Dans le même temps, vous devez également maîtriser les technologies pertinentes de vision par ordinateur et d’intelligence artificielle. Il convient de noter qu'en raison de la conception du côté Web

Conseils de développement PHP et JS : maîtrisez la méthode de création de graphiques en bougies boursières Conseils de développement PHP et JS : maîtrisez la méthode de création de graphiques en bougies boursières Dec 18, 2023 pm 03:39 PM

Avec le développement rapide de la finance sur Internet, l'investissement en actions est devenu le choix de plus en plus de personnes. Dans le trading d'actions, les graphiques en bougies sont une méthode d'analyse technique couramment utilisée. Ils peuvent montrer l'évolution des cours des actions et aider les investisseurs à prendre des décisions plus précises. Cet article présentera les compétences de développement de PHP et JS, amènera les lecteurs à comprendre comment dessiner des graphiques en bougies boursières et fournira des exemples de code spécifiques. 1. Comprendre les graphiques en bougies boursières Avant de présenter comment dessiner des graphiques en bougies boursières, nous devons d'abord comprendre ce qu'est un graphique en bougies. Les graphiques en chandeliers ont été développés par les Japonais

Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Jan 05, 2024 pm 06:08 PM

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

La relation entre js et vue La relation entre js et vue Mar 11, 2024 pm 05:21 PM

La relation entre js et vue : 1. JS comme pierre angulaire du développement Web ; 2. L'essor de Vue.js en tant que framework front-end ; 3. La relation complémentaire entre JS et Vue ; Vue.

Comment implémenter la liaison d'événement de changement d'éléments sélectionnés dans jQuery Comment implémenter la liaison d'événement de changement d'éléments sélectionnés dans jQuery Feb 23, 2024 pm 01:12 PM

jQuery est une bibliothèque JavaScript populaire qui peut être utilisée pour simplifier la manipulation du DOM, la gestion des événements, les effets d'animation, etc. Dans le développement Web, nous rencontrons souvent des situations dans lesquelles nous devons modifier la liaison d'événements sur des éléments sélectionnés. Cet article explique comment utiliser jQuery pour lier des événements de modification d'éléments sélectionnés et fournit des exemples de code spécifiques. Tout d'abord, nous devons créer un menu déroulant avec des options utilisant des étiquettes :

Comment obtenir facilement le code d'état HTTP en JavaScript Comment obtenir facilement le code d'état HTTP en JavaScript Jan 05, 2024 pm 01:37 PM

Introduction à la méthode d'obtention du code d'état HTTP en JavaScript : Dans le développement front-end, nous devons souvent gérer l'interaction avec l'interface back-end, et le code d'état HTTP en est une partie très importante. Comprendre et obtenir les codes d'état HTTP nous aide à mieux gérer les données renvoyées par l'interface. Cet article explique comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournit des exemples de code spécifiques. 1. Qu'est-ce que le code d'état HTTP ? Le code d'état HTTP signifie que lorsque le navigateur lance une requête au serveur, le service

Comment créer des applications basées sur des événements en utilisant PHP Comment créer des applications basées sur des événements en utilisant PHP May 04, 2024 pm 02:24 PM

Les méthodes de création d'applications basées sur des événements en PHP incluent l'utilisation d'EventSourceAPI pour créer une source d'événements et l'utilisation de l'objet EventSource pour écouter les événements côté client. Envoyez des événements à l'aide de Server Sent Events (SSE) et écoutez les événements côté client à l'aide d'un objet XMLHttpRequest. Un exemple pratique consiste à utiliser EventSource pour mettre à jour les inventaires en temps réel sur un site Web de commerce électronique. Ceci est réalisé côté serveur en modifiant l'inventaire de manière aléatoire et en envoyant des mises à jour, et le client écoute les mises à jour d'inventaire via EventSource et les affiche dans. temps réel.

méthode js pour actualiser la page actuelle méthode js pour actualiser la page actuelle Jan 24, 2024 pm 03:58 PM

js pour actualiser la page actuelle : 1. location.reload(); 2. location.href; 3. location.assign(); Introduction détaillée : 1. location.reload(), utilisez la méthode location.reload() pour recharger la page actuelle ; 2. location.href, vous pouvez actualiser la page actuelle en définissant l'attribut location.href, etc.

See all articles