Материалы
[:NetFAQ://]


Поиск

[:NetFAQ://]


Партнеры
Хостинг от Park-Web

www.popularsite.ru
[:NetFAQ://]


Реклама
Деревянные Окна по цене пластика - стеклопакет.
[:NetFAQ://]


Контроль нажатия клавиш JavaSript

Обработка событий нажатия клавиш 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 Отправить форму

Оставить комментарий:

Имя:
Почта:
Комментарий:
Что написанно на картинке;)
[:NetFAQ://]

Справочники
[:NetFAQ://]


FreeSoftware
Графика
Аудио&Видео
CD&DVD
Офис
Системные утилиты
Антивирусы
Игры
Разное
[:NetFAQ://]


Магазин
Вавилон 5 - второй сезон
Вавилон 5 - второй сезон
[:NetFAQ://]


Статистика


[:NetFAQ://]


FAQ Новости Блог RSS Задать вопрос