Maison > Article > interface Web > Une brève discussion sur l'annulation d'événements javascript et la prévention du bouillonnement
Annuler l'opération par défaut
La méthode w3c est e.preventDefault(), IE utilise e.returnValue = false;
En support de addEventListener() Dans le navigateur, vous pouvez également annuler l'opération par défaut de time en appelant la méthode PreventDefault() de l'objet time. Cependant, dans IE avant IE9, le même effet peut être obtenu en définissant la propriété returnValue de l'objet événement sur false. Le code suivant suppose un gestionnaire d'événements qui utilise les trois techniques d'annulation :
function cancelHandler(event){ var event = event || window.event; //用于IE if(event.preventDefault) event.preventDefault(); //标准技术 if(event.returnValue) event.returnValue = false; //IE return false; //用于处理使用对象属性注册的处理程序 }
Le projet actuel de modèle d'événement DOM définit la propriété de l'objet Event defaultPrevented.
return false
le return false de javascript empêchera uniquement le comportement par défaut, mais l'utilisation de jQuery empêchera à la fois le comportement par défaut et empêchera l'objet de bouillonner.
Le code est le suivant :
var a = document.getElementById("testB"); a.onclick = function(){ return false; };
Pour éviter les bulles
la méthode du w3c est e. stopPropagation( ), IE utilise e.cancelBubble = true
Dans les navigateurs prenant en charge addEventListener(), vous pouvez appeler une méthode stopPropagation() de l'objet événement pour empêcher l'événement de continuer à se propager. Si d'autres gestionnaires sont définis sur le même objet, les gestionnaires restants seront toujours appelés, mais l'appel de la méthode stopPropagation() peut être appelé à tout moment pendant la propagation de l'événement. Cela peut fonctionner dans la phase de capture, la cible de l'événement elle-même et la cible de l'événement. stade de bulle de risque.
IE avant IE9 ne prend pas en charge la méthode stopPropagation(). En revanche, l'objet événement IE possède une propriété cancleBubble. Définir cette propriété sur true empêche la propagation de l'événement. (IE8 et les versions antérieures ne prennent pas en charge la phase de capture de la propagation des événements, le bouillonnement est donc la seule propagation d'événements à annuler.)
Le projet actuel de spécification d'événement DOM définit une autre méthode sur l'objet Event, nommée stopImmediatePropagation ( ). Comme stopPropagation(), cette méthode empêche la propagation des événements à partir de tout autre objet, mais empêche également l'appel de tout autre gestionnaire d'événements enregistré sur le même objet.
function stopHandler(event) window.event?window.event.cancelBubble=true:event.stopPropagation(); }
Ce qui précède est tout le contenu de cet article, je j'espère que vous pourrez aimer.
Pour plus de didacticiels connexes, veuillez visiter le Tutoriel vidéo JavaScript