, показывая текущие координаты мыши, но только каждые 250 миллисекунд.
>
> function displayCoords(event) {
> document.body.textContent =
> "Мышь на " + event.pageX + ", " + event.pageY;
> }
> var scheduled = false, lastEvent;
> addEventListener("mousemove", function(event) {
> lastEvent = event;
> if (!scheduled) {
> scheduled = true;
> setTimeout(function() {
> scheduled = false;
> displayCoords(lastEvent);
> }, 250);
> }
> });
>
Итог
Обработчики событий позволяют обнаруживать и реагировать на события, над которыми мы не властны. Для их регистрации используется метод >addEventListener.
У событий есть определяющий их тип (>"keydown", >"focus", и так далее). Большинство событий вызываются конкретными узлами DOM, и затем распространяются на их предков, позволяя связанными с ними обработчикам обрабатывать их.
При вызове обработчика ему передаётся объект события с дополнительной информацией о событии. У объекта также есть методы, позволяющие остановить дальнейшее распространение (>stopPropagation) и предотвратить обработку события браузером по умолчанию (>preventDefault).
Нажатия на клавиши запускают события >"keydown", >"keypress" и >"keyup". Нажатия на кнопки мыши запускают события >"mousedown", >"mouseup" и >"click". Движения мыши запускают события >"mousemove" и, возможно, >"mouseenter" или >"mouseout".
Прокрутку можно обнаружить через событие >"scroll", а изменения фокуса через события >"focus" и >"blur". Когда заканчивается загрузка документа, у объекта >window запускается событие >"load".
В одно и то же время может работать один участок программы. Поэтому обработчики событий и другие запланированные скрипты будут ждать окончания работы текущих.
Упражнения
Цензура клавиатуры
В промежутке с 1928 по 2013 год турецкие законы запрещали использование букв Q, W и X в официальных документах. Это являлось частью общей инициативы подавления курдской культуры – эти буквы используются в языке курдов, но не у турков.
В качестве упражнения на тему странного использования технологий, я прошу вас запрограммировать поле для ввода текста (тег >) так, чтобы эти буквы нельзя было туда вписать. Насчет копирования и вставки и других подобных возможных обходов правила не беспокойтесь.
>
>
> var field = document.querySelector("input");
> // Your code here.
>
След мыши
В ранние дни JavaScript, когда было время кричащих домашних страниц с обилием анимированных картинок, люди использовали язык очень вдохновляющими способами. Одним из них был «след мыши» — серия картинок, которые следовали за курсором при его движении по странице.