La difusión y captura de eventos desempeñan funciones cruciales en la propagación de eventos dentro de la API HTML DOM. Para comprender su funcionalidad, profundicemos en las complejidades de estos dos conceptos.
Burbujeo de eventos versus captura de eventos
Cuando ocurre un evento en un elemento anidado dentro de otro elemento y ambos elementos tienen controladores de eventos registrados para ese evento en particular, el modo de propagación de eventos determina el orden en el que los elementos reciben el evento.
Goteo versus burbujeo
La captura también se conoce como "goteo", un término que ayuda a recordar el orden de propagación: "goteo, burbuja up."
Soporte del navegador
Consideraciones de rendimiento
La propagación de eventos puede tener un rendimiento ligeramente inferior en DOM complejos en comparación con el evento capturando.
Uso
Utilizamos el método addEventListener(type, listening, useCapture) para registrar controladores de eventos en modo burbujeo (predeterminado) o captura. Para utilizar el modelo de captura, el tercer argumento debe establecerse en verdadero.
Ejemplo
Considere la siguiente estructura HTML:
Si se produce un evento de clic en el elemento li:
Recursos adicionales
Demostración interactiva
El siguiente interactivo El ejemplo ilustra las fases de captura y difusión de la propagación de eventos:
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; iAl hacer clic en cualquiera de los elementos resaltados, observe que la fase de captura del evento ocurre primero, seguida de la fase de burbujeo.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3