|
Обработка событий нажатия клавиш JavaScript
Или способ, не дать браузеру реагировать на события клавиатуры. Может быть полезным, если мы хотим сделать собственную реакцию на нажатие, какой либо клавиши.
Например. Мы хотим использовать кнопку пробел и стрелки на клавиатуре, для каких либо своих целей. Сделать это не проблема, но у браузера свое мнение на сей счет. Нажатие клавиш приводит к прокрутке окна, пробел переходит к концу страницы. Нам этого не надо. Будем бороться.
Теория
В JavaScript существует способ задавать собственный обработчик событий (EventListner).
object.addEventListener(Event, Function ,true|false);
Event - обрабатываемое событие.
Function - функция, которая будет обрабатывать событие
true|false - можно ли перехватить событие обработчиком события родительского объекта.
В функцию, обрабатывающую событие, передается так же и некоторые параметры, характеризующие это событие. Например: код клавиши, статус клавиш Ctrl и Alt и т.д.
Чтобы больше никто не мог обработать событие, необходимо сделать две вещи:
1. Запретить перехватывать события родителям.
2. После выполнения обработки вернуть false
Вот собственно и все, можно переходить к практике.
Реализация
Собственно для реализации необходимо выполнить 2 вещи.
Написать функцию обработки и установить в нужном месте обработку события.
Узнать какая кнопка была нажата, можно по keyCode, который передается вместе с событием.
function reg_event(event){//обработка события
if(event.keyCode==32){// стрелка в лево
....
event.preventDefault();//запрет на дальнейшее распространение
return false;//возвращаем false
}
....
}
Теперь установим обработчик события
if (document.addEventListener) { // FF и другие
document.addEventListener('keydown', reg_event,false);
}
if (htmlElement.attachEvent) { // специально для MSIE
htmlElement.attachEvent('keydown',reg_event);
}
Вот собственно и все. До новых встреч.
Опубликовано: 2008-08-01 12:34:58 ShadX
Комментарии
| Irker |
жаль только нажатие кириллицы не ловится, кейкод возвращает ноль
|
|
| shadx |
хмм, можно подумать, над вариантом. Завтра проснусь )))
|
|
| Max |
Спасибо за толково написанную и рабочую статью!
|
|
| gamler |
мало инфы
|
|
| Сергей |
кавычки двойные, хз у меня не работает с одинарными
|
|
| Оля |
Какой keyCode соответствует клавише Ctrl ?
Можно ли составить JavaScript блокирующий нажатие этой клавиши, а так же её сочетаний для копирования, сохранения и выделения содержимого страницы?
Спасибо
|
|
| Алексеееееееееееееееееей |
Спасибо. Пригодилось
|
|
| defs |
три года прошло а всё до сих пор работает )))
спасибо огромное!
|
|
| fdfdfd |
Отправить форму
|
|
|
Оставить комментарий:
|
|
|