Книга: JavaScript. Подробное руководство, 6-е издание
17.1.1.4. События клавиатуры
17.1.1.4. События клавиатуры
Когда веб-броузер получает фокус ввода, он начинает генерировать события всякий раз, когда пользователь нажимает и отпускает клавиши на клавиатуре. Нажатия горячих комбинаций, имеющих значение для операционной системы или самого броузера, часто «съедаются» операционной системой или броузером и не передаются обработчикам событий на JavaScript. События от клавиатуры генерируются в любом элементе документа, обладающем фокусом ввода, и всплывают вверх до объектов документа и окна. Если ни один элемент не обладает фокусом ввода, события возбуждаются непосредственно в объекте документа. Обработчикам событий от клавиатуры передается объект события, имеющий свойство keyCode
, позволяющее узнать, какая клавиша была нажата или отпущена. В дополнение к свойству keyCode
объект события от клавиатуры также имеет свойства aItKey, ctrlKey, metaKey
и shiftKey
, описывающие состояние клавиш-модификаторов.
События «keydown» и «keyup» являются низкоуровневыми событиями от клавиатуры: они генерируются, когда производится нажатие или отпускание клавиши (даже если это клавиша-модификатор). Когда событие «keydown» генерируется нажатием клавиши, соответствующей печатаемому символу, после события «keydown», но перед событием «keyup» дополнительно генерируется событие «keypress». (В случае если клавиша удерживается в нажатом состоянии настолько долго, что начинается автоповтор символа, перед событием «keyup» будет сгенерировано множество событий «keypress».) Событие «keypress» является высокоуровневым событием ввода текста и соответствующий ему объект события содержит информацию о введенном символе, а не о нажатой клавише.
События «keydown», «keyup» и «keypress» поддерживаются всеми броузерами, однако существуют некоторые проблемы совместимости из-за того, что не были стандартизованы значения свойства keyCode
объекта события. Спецификация «DOM Level 3 Events», описываемая ниже, пытается решить эти проблемы совместимости, но эти решения пока не реализованы. Пример обработки событий «keydown» приводится в разделе 17.9, а в разделе 17.8 приводится пример обработки событий «keypress».
- Профилактика поломок клавиатуры
- 17.9. События клавиатуры
- 10.1.20. Ввод символов с клавиатуры
- Оперативное реагирование на важные события
- 17.1.1.1. События форм
- 17.1.2. События модели DOM
- 17.8. События ввода текста
- Масштабность события
- События
- События от кнопок клавиатуры
- Ответ на события клавиатуры
- 14. Обработка событий