Ereignis-Bubbling und -Erfassung spielen eine entscheidende Rolle bei der Ereignisweitergabe innerhalb der HTML-DOM-API. Um ihre Funktionalität zu verstehen, wollen wir uns mit den Feinheiten dieser beiden Konzepte befassen.
Event Bubbling vs. Event Capturing
Wenn ein Ereignis in einem Element auftritt, das in einem anderen Element verschachtelt ist , und beide Elemente über registrierte Ereignishandler für dieses bestimmte Ereignis verfügen, bestimmt der Ereignisausbreitungsmodus die Reihenfolge, in der die Elemente das empfangen event.
Trickling vs. Bubbling
Das Einfangen wird auch als „Trickling“ bezeichnet, ein Begriff, der dabei hilft, sich an die Ausbreitungsreihenfolge zu erinnern: „Riesel herab, Blase.“ up."
Browser-Unterstützung
Leistungsüberlegungen
Ereignisblasen können auftreten haben in komplexen DOMs im Vergleich zur Ereigniserfassung eine etwas geringere Leistung.
Verwendung
Wir verwenden die Methode addEventListener(type, listener, useCapture), um Ereignishandler in beiden Bubblings zu registrieren (Standard) oder Aufnahmemodus. Um das Erfassungsmodell zu verwenden, sollte das dritte Argument auf true gesetzt werden.
Beispiel
Bedenken Sie die folgende HTML-Struktur:
Wenn ein Klickereignis im li-Element auftritt:
Zusätzliche Ressourcen
Interaktive Demonstration
Das folgende interaktive Beispiel veranschaulicht die Erfassungs- und Bubbling-Phasen der Ereignisverbreitung:
var logElement = document.getElementById('log'); function log(msg) { logElement.innerHTML = ('' msg '
'); } function capture() { log('capture: ' this.firstChild.nodeValue.trim()); } function bubble() { log('bubble: ' this.firstChild.nodeValue.trim()); } var divs = document.getElementsByTagName('div'); for (var i = 0; iWenn Sie auf eines der hervorgehobenen Elemente klicken, beobachten Sie zunächst die Ereigniserfassungsphase, gefolgt von der Blasenphase.
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