Dans le code suivant, pourquoi l'alerte Aussi, pourquoi P> ('alerte sur BTN est déclenchée')})})}) code> incendies, même si
event.preventdefault () code> est appelé avant cette ligne Dans le
Cliquez sur CODE> Handler du
#btn code> El.
onclick = "alerte () code> ne tire pas sur
#btn code> ou sur
#wrap code> div mais les incendies de rappel attachés à
Cliquez sur CODE> avec
AddeventListener CODE> Feux. P>
<div id="wrap" onclick="alerted">
<button id="btn" onclick="alerted">Click Me</button>
</div>
3 Réponses :
appeler Si vous voulez vous assurer que le Le reste de la fonction s'arrête en cours d'exécution lorsque Ce serait probablement une bonne idée de définir p> événement.preventDefault () code> ou
event.stoppropagation code> n'arrête pas le rappel actuellement en cours. peu importe em> le contexte d'une fonction, s'il commence à exécuter, le seul moyen de l'empêcher de continuer à continuer d'être explicitement
retour code>.
PRENVENDEFAULT () code> est appelé, passe à: p>
événement code> comme argument que le gestionnaire prend plutôt que de s'appuyer sur la fenêtre implicitly global
.event code> (qui, bien qu'il fonctionne em> dans certains navigateurs, est Pas une bonne idée d'utiliser ).
<div id="wrap" onclick="alerted">
<button id="btn" onclick="alerted">Click Me</button>
</div>
Malheureusement, le premier chrome, et maintenant, je pense que même Firefox, a adopté cela une fois que Microsoft spécifique des déchets de l'événement mondial non standard: P
@Jaromandax - et ils (Mozilla) ont tenu à Soooooo Long. :-) Mais C'est précisé maintenant , comme beaucoup de bits hérités de déchets le Web est bloqué avec la compatibilité. J'aimerais penser que les navigateurs commenceraient à émettre des messages de console de dépréciation lorsqu'il est utilisé, mais ...
Parce que lorsque l'événement tire même si vous arrêtez sa propagation, il ne tirera pas dans d'autres auditeurs d'événements, mais votre fonction continuera à exécuter. P>
Explanation: L'alerte n'est pas par défaut dans votre événement de clic, appelant Tout comme la réponse actuelle, pour empêcher l'alerte, utilisez Aussi, je viens de remarquer, votre code Explanation 1: L'alerte ne tire pas dans le Explication 2: Bouton est un objet non un événement, les objets peuvent avoir les mêmes événements. Exemple: Les divs sont conteneurs mais vous pouvez utiliser un événement de clic sur eux. P> événement.preventDefault (); code> ou ne pas déclenchera l'alerte de toute façon. P>
PREVENDDEFAULT () code> dépend de l'événement par défaut. Exemple: Utilisation de
PRENVENDEFAULT () CODE> ON CLICK Event empêchera de cliquer sur la gâchette ou de l'utilisation de
PRENVENDEFAULT () CODE> ON EMPLOIDE Empiècer le clavier par défaut. P>
retour; code> p>
onclick = "alerted" code> doit être
onclick = "alerte ()" p> p> p> p> p> P>
BTN code> car il a été empêché. Vous mettez
alerted () code> sur
Onclick code> et le
Cliquez sur CODE> Événement a été empêché.
En d'autres termes, l'alerte est à l'intérieur de clic, cliquez sur a été empêché de sorte que l'alerte ne tire pas. P>
onclick = "alerté () code> corrigé cela. Mais toujours
alerte () code> ne déclenche pas en cliquant sur le bouton ou div. peut-on expliquer, pourquoi?
L'alerte n'est pas par défaut dans votre événement de clic code> alors quelle est la valeur par défaut pour un bouton
De plus, cela est assez confus, car vous utilisez onclick = "" code> dans html, même si vous avez déjà utilisé
addeventlistener code> sur javascript.
L'alerte
code> n'est pas l'action par défaut i> de l'événement, l'empêchement naturellement de la valeur par défaut n'a aucun effet sur l'alerte
code>. De plus, rien dans le système d'événements DOM ne peut mettre fin à une fonction JavaScript au milieu. Les fonctions JavaScript sont exécutées à l'achèvement.
Sauf un retour @ T.J.Crowder: p
@Jaromandax -
retour code> est b> une achèvement.
Bon point @ T.J.Crowder - Je n'ai pas lu votre commentaire complètement: p
@ T.J.Crowder "L'alerte n'est pas l'action par défaut de l'événement", quelle est l'action par défaut pour un bouton
@appu - votre bouton
code> a le type
défaut code>, qui est
"soumettre" code>. Un bouton Soumettre qui n'est pas sous un formulaire n'a pas d'action par défaut sur
Cliquez sur CODE>. Si c'était sous une forme, cela soumettrait le formulaire.