Страницы

Поиск по вопросам

вторник, 5 марта 2019 г.

Обработка событий

Все чаще вижу, что обработчики событий вешают не на сам элемент, который вызвал событие, и даже не на родителя, а на объект window. Получается так, что все обработчики находятся на window и работают через механизм делегации. Естественно, за исключением тех, которые не умеют всплывать.
Хотелось бы узнать как производительнее и легче браузеру? Или хотя бы как можно это правильно протестировать?
Давайте считать, что у нас на странице много (100-500) обработчиков и сама страница это лес из div'ов. Мне кажется, за счет того, что между самим событием и его всплытием до window происходит некоторое время + время расходуется на выбор правильного делегата. Это может влиять на производительность. Помогите разобраться или это я бешусь с жиру и всё равно как делать на самом деле.


Ответ

Браузеру производительней обрабатывать события на месте. Имхо не так много причин за вешать обработчик на window, зато куча против.
Событию нужно всплыть до window, его могут перехватить и отменить Обработчики будут возбуждаться на все события данного типа и проверять не возникло ли оно на нужном элементе и нужно ли его обработать Обработка будет откладываться пока событие всплывает и обрабатывается более конкретными обработчиками Нельзя будет выстроить порядок обработки повесив дополнительные обработчики на родительский элемент чтобы они выполнились после

Комментариев нет:

Отправить комментарий