Maison interface Web js tutoriel Résumé du mécanisme d'écoute des événements js (capture d'événements)_compétences javascript

Résumé du mécanisme d'écoute des événements js (capture d'événements)_compétences javascript

May 16, 2016 pm 04:40 PM
capture d'événement 事件监听

Dans le processus de développement front-end, nous rencontrons souvent le problème de l'ajout d'événements aux éléments de la page. Il existe de nombreuses méthodes js pour ajouter des événements. Certaines sont directement ajoutées à la structure de la page et certaines utilisent des méthodes de surveillance des événements js. . En raison des différents navigateurs, les serveurs disposent de mécanismes différents pour la diffusion d'événements et la surveillance des événements. Le navigateur LE n'a que la diffusion d'événements et aucun mécanisme de surveillance des événements. Le problème de compatibilité pour la surveillance des événements est le plus gros problème :

.

1. Écrivez les méthodes d'événement directement sur la structure de la page

function eventfun(){ 
//console.log(this); 
} 
<input type="button" onclick="eventfun()" value="button" />//这里涉及到一个this作用域的问题,eventfun再这里是一个全局函数, 对象是[object Window],this指向的是window.
Copier après la connexion

Pour résoudre le problème de cette portée, vous pouvez utiliser la méthode d'ajout de variables d'événement à la fonction globale et transmettre cet objet en tant que paramètre à la fonction à l'intérieur de la structure de la page

<input type="button" onclick="eventfun2(this)" value="button2" /> 
function eventfun2(eve){//在这里把事件对象作为参数传递到全局方法里 
eve.name="alex"; 
window.name="robin"; 
console.log(this);//[object Window] 
console.log(eve);// [object HTMLInputElement] 
console.log(this.name);// robin 
console.log(eve.name);// alexvar 
self=eve; 
console.log(this.name);//robin 
console.log(self.name);//alex 
alert(window.name); 
alert(self.name); 
}
Copier après la connexion

2. L'utilisation de la méthode d'attribution de valeurs aux attributs d'un événement est une méthode de liaison d'événements. Cependant, la limitation de cette méthode est qu'elle ne peut lier qu'une seule méthode à l'événement. Si plusieurs méthodes sont liées, la suivante. méthode sera utilisée. Sous réserve de

HTMLElementobject.onclick = fucntion(){//En utilisant cette méthode d'attribution de valeurs aux attributs d'événement, le pointeur de ceci pointera vers l'objet fenêtre, pas l'objet événement, cette méthode est donc une référence

//js code 
fun1(); 
fun2(); 
fun3(); 
console.log(this);//window.object 
} 
function dosomething(){ 
//js code 
} 
HTMLElementobject.onclick = dosomething;//使用这种为事件对象属性赋值的形式,this指针指向事件执行对象 
console.log(this);//htmlElementObject
Copier après la connexion

3. Propagation d'événements - bouillonnement et capture
La norme d'événements DOM définit deux flux d'événements très différents et pouvant avoir un impact considérable sur votre application. Les deux flux d'événements capturent et bouillonnent. Comme de nombreuses technologies Web, Netscape et Microsoft les ont chacune mises en œuvre différemment avant de devenir des standards. Netscape a choisi d'implémenter le flux d'événements de capture, et Microsoft a implémenté le flux d'événements bouillonnants. Heureusement, le W3C a décidé d'utiliser une combinaison de ces deux méthodes, et la plupart des nouveaux navigateurs suivent les deux méthodes de streaming d'événements.
Par défaut, les événements utilisent le flux d'événements bouillonnants et n'utilisent pas le flux d'événements de capture. Cependant, dans Firefox et Safari, vous pouvez spécifier explicitement d'utiliser le flux d'événements de capture en transmettant le paramètre useCapture lors de l'enregistrement de l'événement et en définissant ce paramètre sur true.
Flux d'événements bouillonnants
Lorsqu'un événement est déclenché sur un certain élément du DOM, tel que l'utilisateur cliquant avec la souris sur le nœud du nom du client, l'événement suivra les nœuds parents dont le nœud hérite et parcourra toute la hiérarchie des nœuds DOM jusqu'à ce qu'il rencontre le nœud qui y est attaché. Le nœud du gestionnaire de type d'événement. À ce stade, l'événement est un événement onclick. La diffusion d'événements peut être interrompue à tout moment pendant le processus de diffusion. Dans les navigateurs conformes à la norme W3C, vous pouvez appeler la méthode stopPropagation() sur l'objet événement. Dans Internet Explorer, vous pouvez définir la propriété CancelBubble de l'objet événement. vrai. . Si vous n'arrêtez pas la propagation de l'événement, celui-ci continuera à circuler dans le DOM jusqu'à ce qu'il atteigne la racine du document.
Capturer le flux d'événements
Le traitement des événements commencera à la racine de la hiérarchie DOM, plutôt qu'à partir de l'élément cible qui a déclenché l'événement. L'événement est transmis depuis tous les éléments ancêtres de l'élément cible dans l'ordre. Dans ce processus, l'événement sera capturé par chaque élément hérité de la racine du document vers l'élément cible de l'événement. Si l'écouteur d'événement définit l'attribut useCapture sur true lors de son enregistrement, ils peuvent alors être distribués à n'importe quel élément pendant cette période. élément pour gérer l'événement ; sinon, l'événement est ensuite transmis à l'élément suivant sur le chemin d'accès à l'élément dérivé, jusqu'à l'élément cible. Une fois que l'événement a atteint l'élément cible, il bouillonnera ensuite à travers les nœuds DOM.
Méthodes modernes de liaison d'événements
Comme indiqué dans la leçon précédente, l'utilisation de la liaison d'événements traditionnelle présente de nombreux inconvénients, tels que l'impossibilité d'enregistrer plusieurs gestionnaires d'événements pour le même événement sur un objet. Les navigateurs et le W3C n'ont pas pris cela en considération, c'est pourquoi les navigateurs modernes ont leurs propres méthodes pour lier les événements.
W3C DOM
obj.addEventListener(evtype,fn,useCapture) ——Méthode fournie par le W3C pour ajouter une fonction de gestion des événements. obj est l'objet pour ajouter l'événement, evtype est le type d'événement sans préfixe on, fn est la fonction de traitement d'événement, si useCapture est vrai, la fonction de traitement d'événement est exécutée en phase de capture, sinon elle est exécutée en phase de bouillonnement
obj.removeEventListener(evtype,fn,useCapture)——Méthode fournie par le W3C pour supprimer la fonction de gestionnaire d'événements
Méthode Microsoft IE
obj.attachEvent(evtype,fn) ——La méthode fournie par IE pour ajouter une fonction de traitement d'événements. obj est l'objet pour ajouter l'événement, evtype est le type d'événement, avec le préfixe on, fn est la fonction de traitement d'événement, IE ne prend pas en charge la capture d'événement
obj.detachEvent(evtype,fn,) ——La méthode fournie par IE pour supprimer les fonctions de traitement d'événements evtype contient le préfixe on

.

Méthodes pour intégrer les deux

function addEvent(obj,evtype,fn,useCapture) { 
if (obj.addEventListener) { 
obj.addEventListener(evtype,fn,useCapture); 
} else { 
obj.attachEvent("on"+evtype,fn);//IE不支持事件捕获 
} else { 
obj["on"+evtype]=fn;//事实上这种情况不会存在 
} 
} 
function delEvent(obj,evtype,fn,useCapture) { 
if (obj.removeEventListener) { 
obj.removeEventListener(evtype,fn,useCapture); 
} else { 
obj.detachEvent("on"+evtype,fn); 
} else { 
obj["on"+evtype]=null; 
} 
}
Copier après la connexion

Il y a un problème avec la méthode attach d'IE lors de l'utilisation de attachEvent, dans la fonction de traitement des événements, cela pointe vers window, pas obj ! Bien sûr, il existe une solution à cela !

Mais la méthode attachEvent d'IE a un autre problème. La même fonction peut être enregistrée plusieurs fois sur le même objet et le même événement. La solution : abandonnez la méthode attachEvent d'IE ! La méthode attachEvent sous IE ne prend pas en charge la capture et n'est pas très différente de l'enregistrement d'événements traditionnel (sauf qu'elle peut lier plusieurs fonctions de traitement d'événements), et la méthode attachEvent d'IE a un problème de fuite de mémoire !
addEvent,delEvent version moderne

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>js事件监听</title> 
<style> 
table td{font:12px; border-bottom:1px solid #efefef;} 
</style> 
</head> 

<body> 
<div id="outEle" style="padding:10px; border:1px solid #b2b2b2; background:#efefef;"> 
<input type="button" onclick="eventfun()" id="button" value="button" /><br /> 
<input type="button" onclick="eventfun2(this);" id="button2" value="button2" /><br /> 
<input type="button" id="button3" value="button3" /><br /> 
<input type="button" id="button4" value="button4" /><br /> 
<table id="htmlEleTable" width="100%" border="0" style="border:1px solid #b2b2b2; background:#fff;"> 
<tr id="1111"><td>111111111111111111111111111111</td></tr> 
<tr id="22222"><td>222222222222222222222222222222</td></tr> 
<tr id="33333"><td>333333333333333333333333333333</td></tr> 
<tr id="4444"><td>444444444444444444444444444444</td></tr> 
<tr id="55555"><td>555555555555555555555555555555</td></tr> 
</table> 
</div> 
<script language="javascript" type="text/javascript"> 
function eventfun(){//1.直接把js方法写在页面结构上 
console.log(this);//这里涉及到一个this作用域的问题,eventfun再这里是一个全局函数, 对象是window,this指向的是window 
alert(this); 
} 
function eventfun2(eve){//在这里把事件对象作为参数传递到全局方法里 
eve.name="alex";// 
window.name="robin"; 
console.log(this);//[object Window] 
console.log(eve);// [object HTMLInputElement] 
console.log(this.name);// robin 
console.log(eve.name);// alex 
var self=eve; 
console.log(this.name);//robin 
console.log(self.name);//alex 
alert(window.name); 
alert(self.name); 
} 
function eventfun3(){//1.直接把js方法写在页面结构上 
console.log(this);//这里涉及到一个this作用域的问题,eventfun再这里是一个全局函数, 对象是window,this指向的是window 
console.log(this.id); 
alert(this); 
alert(this.id); 
//var outEleObj = EventUtil.$("outEle"); 
//removeEvent(outEleObj,"click",eventfun3); 
} 
/* 
var EventUtil = {}; 
EventUtil.$ = function(id){ 
return document.getElementById(id); 
} 
EventUtil.openmes = eventfun3; 
EventUtil.addEventHandle = function(eventTarget,eventtype,eventHandle){//定义事件监听的对象元素,事件类型,事件函数 
if(eventTarget.attachEvent){ 
eventTarget.attachEvent("on"+eventtype,eventHandle); 
}else if(eventTarget.addEventListener){ 
eventTarget.addEventListener(eventtype,eventHandle,false) 
}else{ 
eventTarget["on" + eventtype] = null; 
} 

}; 
EventUtil.deleEventHandle = function(eventTarget,eventtype,eventHandle){//定义事件监听的对象元素,事件类型,事件函数 
if(eventTarget.detachEvent){ 
alert("on"+eventtype); 
alert("on"+eventHandle); 
eventTarget.detachEvent("on"+eventtype,eventHandle); 
}else if(eventTarget.removeEventListener){ 
eventTarget.removeEventListener(eventtype,eventHandle,false) 
}else{ 
eventTarget["on" + eventtype] = null; 
} 

};*/ 
var EventUtil={ 
$:function(id){ 
return document.getElementById(id); 
}, 
but4fun:function(){ 
console.log(this); 
this.addEventHandle(); 
}, 
eventfun3:function (){ 
console.log(this); 
alert(this); 
delEvent(obj,evtype,fn,useCapture); 
} 
} 
/***使用addEventListener,attachEvent进行dom事件的监听 
function addEvent(obj,evtype,fn,useCapture){ 
if (obj.addEventListener) { 
obj.addEventListener(evtype,fn,useCapture); 
}else if(obj.attachEvent){ 
obj.attachEvent("on"+evtype,function () { 
fn.call(obj); 
}); 
}else { 
obj["on"+evtype]=fn;//事实上这种情况不会存在 
} 
} 
function delEvent(obj,evtype,fn,useCapture) { 
if (obj.removeEventListener) { 
obj.removeEventListener(evtype,fn,useCapture); 
} else if(obj.detachEvent){ 
obj.detachEvent("on"+evtype,fn); 
} else { 
obj["on"+evtype]=null; 
} 
} 



function addEvent(obj,evtype,fn,useCapture) { 
if (obj.addEventListener) {//优先考虑W3C事件注册方案 
obj.addEventListener(evtype,fn,!!useCapture); 
} else {//当不支持addEventListener时(IE),由于IE同时也不支持捕获,所以不如使用传统事件绑定 
if (!fn.__EventID) {fn.__EventID = addEvent.__EventHandlesCounter++;} 
//为每个事件处理函数分配一个唯一的ID 

if (!obj.__EventHandles) {obj.__EventHandles={};} 
//__EventHandles属性用来保存所有事件处理函数的引用 

//按事件类型分类 
if (!obj.__EventHandles[evtype]) {//第一次注册某事件时 
obj.__EventHandles[evtype]={}; 
if (obj["on"+evtype]) {//以前曾用传统方式注册过事件处理函数 
(obj.__EventHandles[evtype][0]=obj["on"+evtype]).__EventID=0;//添加到预留的0位 
//并且给原来的事件处理函数增加一个ID 
} 
obj["on"+evtype]=addEvent.execEventHandles; 
//当事件发生时,execEventHandles遍历表obj.__EventHandles[evtype]并执行其中的函数 
} 
} 
} 

addEvent.__EventHandlesCounter=1;//计数器,0位预留它用 
addEvent.execEventHandles = function (evt) {//遍历所有的事件处理函数并执行 
if (!this.__EventHandles) {return true;} 
evt = evt || window.event; 
var fns = this.__EventHandles[evt.type]; 
for (var i in fns) { 
fns[i].call(this); 
} 
}; 
/* 
function delEvent(obj,evtype,fn,useCapture) { 
if (obj.removeEventListener) {//先使用W3C的方法移除事件处理函数 
obj.removeEventListener(evtype,fn,!!useCapture); 
} else { 
if (obj.__EventHandles) { 
var fns = obj.__EventHandles[evtype]; 
if (fns) {delete fns[fn.__EventID];} 
} 
} 
} 

function fixEvent(evt) {//fixEvent函数不是单独执行的,它必须有一个事件对象参数,而且只有事件发生时它才被执行!最好的方法是把它整合到addEvent函数的execEventHandles里面 
if (!evt.target) { 
evt.target = evt.srcElement; 
evt.preventDefault = fixEvent.preventDefault; 
evt.stopPropagation = fixEvent.stopPropagation; 
if (evt.type == "mouseover") { 
evt.relatedTarget = evt.fromElement; 
} else if (evt.type =="mouseout") { 
evt.relatedTarget = evt.toElement; 
} 
evt.charCode = (evt.type=="keypress")&#63;evt.keyCode:0; 
evt.eventPhase = 2;//IE仅工作在冒泡阶段 
evt.timeStamp = (new Date()).getTime();//仅将其设为当前时间 
} 
return evt; 
} 
fixEvent.preventDefault =function () { 
this.returnValue = false;//这里的this指向了某个事件对象,而不是fixEvent 
}; 
fixEvent.stopPropagation =function () { 
this.cancelBubble = true; 
};*/ 
//console.log(EventUtil.$("button3"));//返回EventUtil函数的对象属性 
//EventUtil.$("button3").onclick= eventfun;//2.使用为对象事件属性赋值的方法来实现事件的监听 
//EventUtil.$("button3").onclick= eventfun2;//为事件属性添加多个方法时,为后者 
//EventUtil.$("button3").onclick= eventfun;//事件捕获是从事件对象逐层外父级检察一直到window对象 
var EventUtil =function(){ 
function getByid(id){ 
return document.getElementById(id); 
}; 
// written by Dean Edwards, 2005 
// with input from Tino Zijdel, Matthias Miller, Diego Perini 

// http://dean.edwards.name/weblog/2005/10/add-event/ 

function addEvent(element, type, handler) { 
if (element.addEventListener) { 
element.addEventListener(type, handler, false); 
} else { 
// assign each event handler a unique ID 
if (!handler.$$guid) handler.$$guid = addEvent.guid++; 
// create a hash table of event types for the element 
if (!element.events) element.events = {}; 
// create a hash table of event handlers for each element/event pair 
var handlers = element.events[type]; 
if (!handlers) { 
handlers = element.events[type] = {}; 
// store the existing event handler (if there is one) 
if (element["on" + type]) { 
handlers[0] = element["on" + type]; 
} 
} 
// store the event handler in the hash table 
handlers[handler.$$guid] = handler; 
// assign a global event handler to do all the work 
element["on" + type] = handleEvent; 
} 
}; 
// a counter used to create unique IDs 
addEvent.guid = 1; 

function removeEvent(element, type, handler) { 
if (element.removeEventListener) { 
element.removeEventListener(type, handler, false); 
} else { 
// delete the event handler from the hash table 
if (element.events && element.events[type]) { 
delete element.events[type][handler.$$guid]; 
} 
} 
}; 

function handleEvent(event) { 
var returnValue = true; 
// grab the event object (IE uses a global event object) 
event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event); 
// get a reference to the hash table of event handlers 
var handlers = this.events[event.type]; 
// execute each event handler 
for (var i in handlers) { 
this.$$handleEvent = handlers[i]; 
if (this.$$handleEvent(event) === false) { 
returnValue = false; 
} 
} 
return returnValue; 
}; 

function fixEvent(event) { 
// add W3C standard event methods 
event.preventDefault = fixEvent.preventDefault; 
event.stopPropagation = fixEvent.stopPropagation; 
return event; 
}; 
fixEvent.preventDefault = function() { 
this.returnValue = false; 
}; 
fixEvent.stopPropagation = function() { 
this.cancelBubble = true; 
}; 
function tableAddEvent(){ 

}; 

return{ 
add:addEvent, 
remove:removeEvent, 
$:getByid 
} 
}(); 

var outEleObj = EventUtil.$("outEle"); 
//addEvent.apply(EventUtil,[outEleObj,"click",eventfun3]); 
//EventUtil.add(outEleObj,"click",eventfun3); 
var inputObj = EventUtil.$("button4"); 
var tableEle = EventUtil.$("htmlEleTable"); 
var tabTrEle = tableEle.getElementsByTagName("tr"); 
EventUtil.add(tableEle,"click",eventfun3); 
for (i=0; i<tabTrEle.length; i++){ 
EventUtil.add(tabTrEle[i],"click",eventfun3); 
} 
EventUtil.remove(tableEle,"click",eventfun3);//事件冒删除方法 
EventUtil.add(tableEle,"click",eventfun3);//事件冒泡添加方法 
//EventUtil.add(inputObj,"click",eventfun3); 
//EventUtil.remove(outEleObj,"click",eventfun3); 
//console.log(addEvent); 
//addEvent(inputObj,"click",eventfun3,true); 
//delEvent(outEleObj,"click",eventfun3,false); 
</script> 
</body> 
</html>
Copier après la connexion

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)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

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)

Pourquoi l'événement click dans js ne peut-il pas être exécuté à plusieurs reprises ? Pourquoi l'événement click dans js ne peut-il pas être exécuté à plusieurs reprises ? May 07, 2024 pm 06:36 PM

Les événements de clic en JavaScript ne peuvent pas être exécutés à plusieurs reprises en raison du mécanisme de propagation des événements. Pour résoudre ce problème, vous pouvez prendre les mesures suivantes : Utiliser la capture d'événement : Spécifiez un écouteur d'événement à déclencher avant que l'événement ne se déclenche. Remise des événements : utilisez event.stopPropagation() pour arrêter le bouillonnement des événements. Utilisez une minuterie : déclenchez à nouveau l'écouteur d'événements après un certain temps.

À quoi sert la capture d'événements ? À quoi sert la capture d'événements ? Nov 01, 2023 pm 01:16 PM

Les fonctions de capture d'événements incluent l'obtention pratique d'éléments cibles et d'informations contextuelles, la prévention efficace des bulles d'événements, la personnalisation de la logique de traitement des événements et l'amélioration de la vitesse de réponse des pages. Introduction détaillée : 1. Il est pratique d'obtenir l'élément cible et les informations contextuelles. Dans la phase de capture d'événement, lorsqu'un événement se produit, le navigateur commence par l'élément le plus externe et recherche les éléments associés à l'événement couche par couche jusqu'à la cible. L'élément est trouvé.Jusqu'à présent ;2. Empêcher efficacement le bouillonnement d'événements. Dans le modèle d'événement, lorsqu'un événement se produit, il est transmis couche par couche à partir de l'élément le plus externe.

Comment empêcher efficacement les événements de bouillonner Comment empêcher efficacement les événements de bouillonner Feb 19, 2024 pm 08:25 PM

Comment empêcher efficacement le bouillonnement d'événements nécessite des exemples de code spécifiques.Le bouillonnement d'événements signifie que lorsqu'un événement sur un élément est déclenché, l'élément parent recevra également le même déclencheur d'événement. Ce mécanisme de livraison d'événements pose parfois des problèmes au développement Web. Nous devons apprendre à empêcher efficacement les événements de se déclencher. En JavaScript, nous pouvons empêcher un événement de se propager en utilisant la méthode stopPropagation() de l'objet événement. Cette méthode peut être appelée dans un gestionnaire d'événements pour empêcher la propagation de l'événement vers l'élément parent.

Implémenter la fonction de surveillance des événements cartographiques à l'aide de JavaScript et Tencent Maps Implémenter la fonction de surveillance des événements cartographiques à l'aide de JavaScript et Tencent Maps Nov 21, 2023 pm 04:10 PM

Désolé, mais je ne peux pas vous fournir un exemple de code complet. Cependant, je peux vous fournir une idée de base et un exemple d'extrait de code pour référence. Voici un exemple simple de combinaison de JavaScript et de Tencent Map pour implémenter la fonction de surveillance des événements de carte : //Présentation de l'API de Tencent Map constscript=document.createElement('script');script.src='https://map.

Cas d'application pratiques de bouillonnement d'événements et de capture d'événements dans le développement front-end Cas d'application pratiques de bouillonnement d'événements et de capture d'événements dans le développement front-end Jan 13, 2024 pm 01:06 PM

Cas d'application de la diffusion d'événements et de la capture d'événements dans le développement front-end La diffusion d'événements et la capture d'événements sont deux mécanismes de diffusion d'événements souvent utilisés dans le développement front-end. En comprenant et en appliquant ces deux mécanismes, nous pouvons gérer les comportements interactifs dans la page de manière plus flexible et améliorer l'expérience utilisateur. Cet article présentera les concepts de bouillonnement d'événements et de capture d'événements, et les combinera avec des exemples de code spécifiques pour démontrer leurs cas d'application dans le développement front-end. 1. Les concepts de bouillonnement d'événements et de capture d'événements. Le bouillonnement d'événements (EventBubbling) fait référence au processus de déclenchement d'un élément.

Qu'est-ce que la capture d'événements bouillonnants Qu'est-ce que la capture d'événements bouillonnants Nov 21, 2023 pm 02:10 PM

La diffusion d'événements et la capture d'événements font référence à deux méthodes différentes de propagation d'événements lors de la gestion des événements dans le DOM HTML. Introduction détaillée : 1. Le bouillonnement d'événement signifie que lorsqu'un élément déclenche un événement, l'événement se propage de l'élément le plus interne à l'élément le plus externe. C'est-à-dire que l'événement est d'abord déclenché sur l'élément déclencheur, puis remonte étape par étape jusqu'à atteindre l'élément racine. 2. La capture d'événement est le processus inverse : l'événement démarre à partir de l'élément racine et est capturé étape par étape. étape jusqu'à ce qu'il atteigne les éléments déclencheurs.

Modificateurs couramment utilisés dans vue Modificateurs couramment utilisés dans vue May 08, 2024 pm 04:27 PM

Les modificateurs de Vue.js sont utilisés pour modifier le comportement des instructions. Les modificateurs couramment utilisés incluent : l'exécution retardée (.lazy), les résultats de calcul mis en cache (.memo), la conversion forcée en nombres (.number), la réduction des espaces (.trim), et blocage Comportement par défaut (.prevent), empêcher le bouillonnement d'événements (.stop), exécuter une seule fois (.once), déclencher uniquement sur l'élément courant (.self), déclencher pendant la phase de capture d'événement (.capture), déclencher lorsque le l'élément entre dans le DOM (.enter), déclenché lorsque l'élément quitte le DOM (.leave).

Problèmes courants et solutions causés par le bouillonnement d'événements Problèmes courants et solutions causés par le bouillonnement d'événements Feb 20, 2024 pm 06:48 PM

Le bouillonnement d'événement (bullage d'événement) signifie que dans le DOM, lorsqu'un événement sur un élément est déclenché, il bouillonne jusqu'à l'élément parent de l'élément, puis remonte jusqu'aux éléments parents de niveau supérieur jusqu'à ce qu'il bouillonne. le nœud racine du document. Bien que la diffusion d'événements soit utile dans de nombreuses situations, elle peut parfois causer des problèmes courants. Cet article abordera certains problèmes courants et proposera des solutions. Le premier problème courant est le déclenchement d’un événement plusieurs fois. Lorsqu'un événement sur un élément se propage vers plusieurs éléments parents, cela peut provoquer

See all articles