Browser API
September 24, 2023
Событийная модель браузера (bubbling, capturing)
Пользовательские события внутри браузера бывают разных типов:
Эти события работают согласно правилам событийной модели браузера.
Цель события (currentTarget)
Это элемент к которому прикреплен слушатель:
<div onclick="clickHandler(event)" className="parent">
<div>
<button>Button</button>
</div>
</div>
function clickHandler(event) {
console.log(event.currentTarget)
}При клике на любой внутренний элемент мы всегда получим разметку элемента на который прикреплен слушатель события parent.
Вызов события
Событие можно вызвать двумя способами
- В свойстве
onв DOM-элементеonclickonscrollи т.д. - В свойство нужно записать анонимную функцию, она будет срабатывать каждый раз при вызове события
- Чтобы отписаться от вызова в свой нужно записать
null - Можно добавить только одну функцию вызова
- В методе
addEventListener()
Распространение события (event propagation)
Фаза погружения (capturing phase)
- Срабатывает после вызова события
- Заставляет цепочку событий погружаться вниз по
windowчерез всех родителей доevent.currentTarget— целевого элемента вызвавшего событие
Целевая фаза (target phase)
Всплытие (bubbling phase)
- Срабатывает после целевой фазы
- Заставляет цепочку событий подниматься вверх от
event.currentTargetчерез всех родителей до объектаwindow
Прекращение всплытия
Любой промежуточный обработчик может остановить цепочку всплытия.
- Метод
event.stopPropagation()останавливает всплытие, но на текущем элементе все обработчики будут вызваны - Метод
event.stopImmediatePropagation()останавливает всплытие и обработку событий на текущем элементе
Отключение действия по-умолчанию
Метод event.preventDefault() отключает поведение элемента по умолчанию.
Свойство event.defaulPrevented служит индикатором применения к элементу метода и позволяет узнать что event.preventDefault() сработал
Вопросы
В чем разница event.currentTarget и eventTarget?
currentTargetэто элемент на который мы повесили обработчик событийtargetэто элемент на котором произошло событие
Материалы
September 24, 2023, 09:43
0 views
0 reactions
0 replies
0 reposts