Всплывание и захват событий играют решающую роль в распространении событий в HTML DOM API. Чтобы понять их функциональность, давайте углубимся в тонкости этих двух концепций.
Всплывание событий и захват событий
Когда событие происходит в элементе, вложенном в другой элемент и оба элемента имеют зарегистрированные обработчики событий для этого конкретного события, режим распространения событий определяет порядок, в котором элементы получают event.
Качание против пузырька
Захват также известен как «качание», термин, который помогает запомнить порядок распространения: «просачиваться вниз, пузыриться». вверх."
Браузер Поддержка
Аспекты производительности
Всплывание событий может иметь немного более низкую производительность в сложных DOM по сравнению с захватом событий.
Использование
Мы используем addEventListener(type, Listener, useCapture) метод для регистрации обработчиков событий либо в режиме пузырькового (по умолчанию), либо в режиме захвата. Чтобы использовать модель захвата, для третьего аргумента должно быть установлено значение true.
Пример
Рассмотрим следующую структуру HTML:
Если событие щелчка происходит в элементе li:
Дополнительные ресурсы
Интерактивный Демонстрация
Следующий интерактивный пример иллюстрирует этапы захвата и всплытия при распространении событий:
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; iПри нажатии на любой из выделенных элементов сначала происходит фаза захвата событий, а затем фаза всплытия.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3