И почему они должны пугать и вас.

Заголовок может вводить в заблуждение, поскольку звучит как угроза, но вы должны чувствовать угрозу. Все, что вы делаете на веб-сайтах, можно «прослушать». От щелчков мыши до нажатий клавиш и наведения мыши на изображение — каждое действие (или бездействие) может быть воспринято сервером веб-сайта.

Сначала это может показаться невинным, и для пользователей это в основном так. Уровень динамического взаимодействия, ожидаемого большинством пользователей от веб-сайта, зависит от использования прослушивателей событий. Без них веб-сайты не более чем постеры фильмов. Однако для программистов прослушиватели событий одновременно и болезненны, и прекрасны. Они общеизвестно сложны и способны «слушать» гораздо больше, чем показывают.

Например, при разработке динамического интерактивного веб-сайта первыми вопросами, которые обычно возникают, являются: «Как пользователи смогут взаимодействовать с x, y или z…?» или «Какие данные мы будем получать от пользователей? ?». Существует множество способов сбора упомянутой информации. Как упоминалось ранее, основными способами сбора информации о пользователях являются прослушиватели событий и отправка форм (поля ввода, в которые пользователи могут вводить информацию).

Итак, как мы назначаем слушателей событий? Мы можем назначить прослушиватели событий определенным элементам в HTML (или DOM, чтобы быть менее конкретным) следующим образом:

document.querySelector('element#id').addEventListener('event', callbackFunction);

С помощью этого кода мы выбираем элемент, который хотим прослушать, с помощью document.querySelector('element#id'), используя как HTML-тег, так и идентификатор элемента. Затем мы присоединяем прослушиватель событий к указанному «узлу» с помощью .addEventListener('event’, callbackFunction);, который прослушивает определенные пользовательские события перед выполнением некоторых функций.

Посмотрите на пример прослушивателя событий на практике на этом классном веб-сайте:



Удивительно! Пустая страница. Нажмите несколько раз на экран, и появится несколько строк. Нажмите еще немного, и цвета начнут появляться.

Итак, этот красивый веб-сайт использует прослушиватели событий, чтобы определить, когда пользователь нажимает на саму страницу. Давайте немного заглянем в код:

Мы получили доступ к DevTools Google Chrome, чтобы посмотреть HTML и любую документацию, используемую веб-сайтом. Перейдя на вкладку «Сеть» в верхней части DevTools, мы можем увидеть, какие запросы и ответы отправляются между веб-сайтом и его сервером:

Важным файлом в данном случае является «index.js». Повторный щелчок открывает другой набор вкладок. Первый, «Заголовки», содержит информацию о GET-запросе. Одна вкладка над разделом «Предварительный просмотр» показывает предварительный просмотр файла JavaScript, отправленного в ответ на запрос.

Ах, идеально. Теперь мы можем посмотреть конкретно в JavaScript, чтобы увидеть, где находятся наши прослушиватели событий:

Справа внизу есть прослушиватель событий, назначенный переменной canvas (назначенной элементу с идентификатором «canvas»):

canvas.addEventListener("click", onRectangleClick)

Он прослушивает события "click" и использует onRectangleClick в качестве функции обратного вызова. А теперь вопрос, что делает onRectangleClick? Мы идем глубже в кроличью нору:

Ух ты! Это что-то делает! Помимо шуток, здесь слишком много всего, чтобы раскрыть его в одном сообщении в блоге. Эта функция зависит от наличия других функций (и, в частности, прослушивателя событий), чтобы добавить динамическое взаимодействие на веб-сайте. Слушатели событий также могут быть настроены на запуск некоторых функций при загрузке веб-страницы. Но что еще более интересно, если пользователь не взаимодействует с веб-сайтом, не будут запущены прослушиватели событий user. Представьте себе пустынное будущее, в котором практически вся человеческая жизнь ушла, а единственный веб-сайт каким-то образом продолжает функционировать (coolmathgames.com). На этом веб-сайте больше не будет пользовательских событий, никогда больше не будет динамической интерактивности. Дун Дун Дун.

Прослушиватели событий кажутся невинной функциональностью, которая делает веб-сайты «умными», но задумайтесь над следующим: что мешает обработчику событий прослушивать другого обработчика событий? Или что, если один прослушиватель событий запускает другую серию функций, которые сами имеют прослушиватели событий? Очень быстро становятся очевидными слои сложности; давай, попробуй сам. В следующий раз, когда вы будете искать головную боль, не ищите ничего, кроме слушателей событий JavaScript.