Книга: Выразительный JavaScript
Обработчики событий
Обработчики событий
Представьте интерфейс, в котором единственным способом узнать, нажали ли на кнопку клавиатуры, было бы считывание текущего состояния кнопки. Чтобы реагировать на нажатия, вам пришлось бы постоянно считывать состояния кнопок, чтобы вы могли поймать это состояние, пока кнопка не отжалась. Было бы опасно проводить другие подсчёты, отнимающие процессорное время, так как можно было бы пропустить момент нажатия.
Таким образом ввод обрабатывался на примитивных устройствах. Шагом вперёд было бы, если железо или операционка замечали бы нажатие кнопки и передавали бы его в очередь. Затем программа периодически могла бы проверять очередь на новые события и реагировать на то, что находится в очереди.
Разумеется, она должна помнить о проверке, и делать это достаточно часто, потому что наличие длительного промежутка времени между нажатием кнопки и тем, когда программа замечает и реагирует на это, ведёт к восприятию этой программы как медленно работающей. Такой подход используется достаточно редко.
Вариант получше – некая промежуточная система, которая позволяет коду реагировать на события в момент их возникновения. Браузеры позволяют это делать путём регистрации функций как обработчиков заданных событий.
<p>Щёлкните по документу для запуска обработчика.</p>
<script>
addEventListener("click", function() {
console.log("Щёлк!");
});
</script>
Функция addEventListener
регистрирует свой второй аргумент как функцию, которая вызывается, когда описанное в первом аргументе событие случается.
- Обработчики событий
- События и узлы DOM
- Объекты событий
- Распространение (propagation)
- Действия по умолчанию
- События от кнопок клавиатуры
- Кнопки мыши
- Движение мыши
- События прокрутки
- События, связанные с фокусом
- Событие загрузки
- График выполнения скрипта
- Установка таймеров
- Устранение помех (debouncing)
- Итог
- Упражнения
- 17.3.6. Распространение событий
- Обработка событий, генерируемых элементами управления формы
- Программное соединение событий в C#
- .NET Compact Framework: не все поддерживаемые обработчики прерываний предоставляются конструктором форм Visual Studio .N...
- Обработчики событий или перекрытые функции?
- Практический пример обработки событий
- 13.2.4. Обработчики событий в HTML
- 15.9.3. Обработчики событий форм и их элементов
- 19.4.2. Обработчики событий в библиотеке jQuery
- Пример: обработчик управляющих сигналов консоли
- События
- Вывод формы из сценария WSH