Beispielerklärung: Wenn Sie auf die Schaltfläche klicken, wird die Meldung „Schaltfläche angeklickt!“ angezeigt. Die Warnung wird zuerst angezeigt, da das Ereignis auf der Schaltfläche ausgelöst wird. Danach „sprudelt“ das Ereignis zum übergeordneten Div und Sie sehen die Meldung „Übergeordnetes Div angeklickt!“. Alarm. Dies liegt daran, dass das Ereignis an der Schaltfläche beginnt und dann bis zu seinem übergeordneten Div reicht. Daher wird dieser Ausbreitungsprozess „Event Bubbling“ genannt.
Ereigniserfassung ist das Gegenteil von Bubbling. Das Ereignis beginnt oben auf der Webseite (beginnend mit dem Dokument) und bewegt sich nach unten in Richtung des Elements, mit dem Sie interagiert haben. Dies bedeutet, dass die Ereignishandler für übergeordnete Elemente zuerst ausgelöst werden und das Ereignis nach unten zu dem untergeordneten Element verschoben wird, auf das Sie geklickt oder mit dem Sie interagiert haben.
Parent Div
Wenn Sie in diesem Fall auf die Schaltfläche klicken, wird die Meldung „Übergeordnetes Div angeklickt!“ angezeigt. Die Warnung wird zuerst angezeigt. Dann erscheint die Meldung „Schaltfläche angeklickt!“ Die Warnung wird angezeigt, da das Ereignis auf der Dokumentebene beginnt, zuerst bis zum übergeordneten Div erfasst (durchsickert) und dann die Schaltfläche erreicht.
Der Wert true des dritten Arguments von addEventListener bestimmt die Erfassungsphase.
Natürlich durchläuft jede Veranstaltung alle drei Phasen:
Erfassungsphase: Das Ereignis beginnt oben (Dokument) und wandert nach unten zum Ziel.
Zielphase: Das Ereignis erreicht das Element, mit dem Sie interagiert haben (das Ziel).
Bubbling-Phase: Nach Erreichen des Ziels sprudelt das Ereignis wieder durch die übergeordneten Elemente nach oben.
Also ja, ein Ereignis durchläuft natürlich alle drei Phasen, aber JavaScript gibt Ihnen die Kontrolle darüber, in welcher Phase Ihr Ereignis-Listener agieren wird.
Auch wenn Ereignisse alle drei Phasen durchlaufen, sind die Ereignis-Listener von JavaScript standardmäßig an die Bubbling-Phase angehängt. Das heißt, wenn Sie einen Ereignis-Listener hinzufügen, ohne etwas anzugeben, lauscht dieser nur in der Bubbling-Phase auf das Ereignis (nachdem das Ereignis das Ziel erreicht hat und mit der Aufwärtsbewegung beginnt).
Wenn Sie „true“ als drittes Argument übergeben, weisen Sie JavaScript an, während der Erfassungsphase (während es durch das DOM wandert) auf das Ereignis zu warten. Das Ereignis durchläuft weiterhin alle Phasen (Erfassung, Ziel und Bubbling), aber der Listener wird während der Erfassungsphase ausgelöst, bevor das Ereignis das Zielelement erreicht.
Geht das Ereignis von der Erfassung zum Sprudeln über, wenn Sie „true“ verwenden? Nein, das Ereignis bewegt sichimmer sowohl durch Einfangen als auch durch Sprudeln. Wenn Sie den Wert „true“ bestehen, verhindern Sie nicht die Blasenphase. Sie fordern den Zuhörer lediglich auf, während der Aufnahme zu antworten. Das Ereignis wird von der Erfassung bis zum Ziel und dem anschließenden Sprudeln wie gewohnt fortgesetzt.
Zusammenfassung.
(nachdem das Ereignis das Ziel erreicht und sich nach oben bewegt).
auszulösen (während sich das Ereignis nach unten bewegt).
Komm schon, „Lerne, als wärst du 5“ ist nur eine Phrase – ich erzähle hier keine Spielzeuggeschichte! Aber ich verspreche, wenn Sie es von Anfang bis Ende sorgfältig durchlesen, wird alles einen Sinn ergeben.
Ereignis-Bubbling und -Erfassung sind zwei Phasen, wie sich Ereignisse durch das DOM (Document Object Model) ausbreiten (oder bewegen), wenn ein Ereignis in JavaScript ausgelöst wird. Diese Aussage erfordert nun, das Konzept der Ereignisausbreitung zu klären.
Wenn ein Ereignis auf einem Element auftritt, beispielsweise auf einer Schaltfläche in einem Div, geschieht das Ereignis nicht nur auf dieser Schaltfläche. Das Ereignis wandert durch das DOM in einem Prozess, der als Ereignisausbreitung bekannt ist. Dieser Prozess erfolgt in zwei Hauptphasen:
Ereigniserfassung (auch „Trickling“ genannt)
Blubberndes Ereignis
Ich hoffe, Sie haben die Idee verstanden. Lassen Sie uns beides anhand von Beispielen verstehen.
Event-Bubbling bedeutet, dass, wenn ein Event auf einem Element auftritt, es zuerst den Event-Handler für dieses Element auslöst. Anschließend bewegt es sich im DOM-Baum nach oben, um die Ereignishandler seiner übergeordneten Elemente auszulösen, und so weiter, bis es das Dokument oder die Wurzel des DOM-Baums erreicht.
Parent Div
Beispielerklärung: Wenn Sie auf die Schaltfläche klicken, wird die Meldung „Schaltfläche angeklickt!“ angezeigt. Die Warnung wird zuerst angezeigt, da das Ereignis auf der Schaltfläche ausgelöst wird. Danach „sprudelt“ das Ereignis zum übergeordneten Div und Sie sehen die Meldung „Übergeordnetes Div angeklickt!“. Alarm. Dies liegt daran, dass das Ereignis an der Schaltfläche beginnt und dann bis zu seinem übergeordneten Div reicht. Daher wird dieser Ausbreitungsprozess „Event Bubbling“ genannt.
Ereigniserfassung ist das Gegenteil von Bubbling. Das Ereignis beginnt oben auf der Webseite (beginnend mit dem Dokument) und bewegt sich nach unten in Richtung des Elements, mit dem Sie interagiert haben. Dies bedeutet, dass die Ereignishandler für übergeordnete Elemente zuerst ausgelöst werden und das Ereignis nach unten zu dem untergeordneten Element verschoben wird, auf das Sie geklickt oder mit dem Sie interagiert haben.
Parent Div
Wenn Sie in diesem Fall auf die Schaltfläche klicken, wird die Meldung „Übergeordnetes Div angeklickt!“ angezeigt. Die Warnung wird zuerst angezeigt. Dann erscheint die Meldung „Schaltfläche angeklickt!“ Die Warnung wird angezeigt, da das Ereignis auf der Dokumentebene beginnt, zuerst bis zum übergeordneten Div erfasst (durchsickert) und dann die Schaltfläche erreicht.
Der Wert true des dritten Arguments von addEventListener bestimmt die Erfassungsphase.
Natürlich durchläuft jede Veranstaltung alle drei Phasen:
Erfassungsphase: Das Ereignis beginnt oben (Dokument) und wandert nach unten zum Ziel.
Zielphase: Das Ereignis erreicht das Element, mit dem Sie interagiert haben (das Ziel).
Bubbling-Phase: Nach Erreichen des Ziels sprudelt das Ereignis wieder durch die übergeordneten Elemente nach oben.
Also ja, ein Ereignis durchläuft natürlich alle drei Phasen, aber JavaScript gibt Ihnen die Kontrolle darüber, in welcher Phase Ihr Ereignis-Listener agieren wird.
Auch wenn Ereignisse alle drei Phasen durchlaufen, sind die Ereignis-Listener von JavaScript standardmäßig an die Bubbling-Phase angehängt. Das heißt, wenn Sie einen Ereignis-Listener hinzufügen, ohne etwas anzugeben, lauscht dieser nur in der Bubbling-Phase auf das Ereignis (nachdem das Ereignis das Ziel erreicht hat und mit der Aufwärtsbewegung beginnt).
Wenn Sie „true“ als drittes Argument übergeben, weisen Sie JavaScript an, während der Erfassungsphase (während es durch das DOM wandert) auf das Ereignis zu warten. Das Ereignis durchläuft weiterhin alle Phasen (Erfassung, Ziel und Bubbling), aber der Listener wird während der Erfassungsphase ausgelöst, bevor das Ereignis das Zielelement erreicht.
Geht das Ereignis von der Erfassung zum Sprudeln über, wenn Sie „true“ verwenden? Nein, das Ereignis bewegt sichimmer sowohl durch Einfangen als auch durch Sprudeln. Wenn Sie den Wert „true“ bestehen, verhindern Sie nicht die Blasenphase. Sie fordern den Zuhörer lediglich auf, während der Aufnahme zu antworten. Das Ereignis wird von der Erfassung bis zum Ziel und dem anschließenden Sprudeln wie gewohnt fortgesetzt.
Zusammenfassung.
(nachdem das Ereignis das Ziel erreicht und sich nach oben bewegt).
auszulösen (während sich das Ereignis nach unten bewegt).
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3