Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Обработка событий клавиатуры (https://javascript.ru/forum/events/3433-obrabotka-sobytijj-klaviatury.html)

MaxPayne 18.04.2009 12:21

Обработка событий клавиатуры
 
Есть на странице три дива.

1. Первый див.

2. Второй див и перемещающийся по нему третий див.

Нужно сделать так, чтобы по щелчку на первый див можно было с помощью клавиатуры управлять им.
По щелчку на второй див - можно было бы управлять третьим.
По щелчку на свободной от дивов области управлять окном браузера (по стандарту).

Kolyaj 18.04.2009 12:22

А проблема в чем?

MaxPayne 18.04.2009 12:33

Прописываю в onkeypress второго дива функцию, по которой происходит сдвиг третьего дива внутри второго, но управление по прежнему остается окна браузера, а не необходимого дива.

Kolyaj 18.04.2009 12:42

Откуда у дива возьмется событие keypress?

MaxPayne 18.04.2009 12:51

Ясно. С мышью тут конечно проще, а как поступить в таком случае с клавиатурой?

Riim 18.04.2009 12:58

Кусок из Jquery:
// Add which for key events
if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
	event.which = event.charCode || event.keyCode;


str 2745

Дальше по таблице кодов.
Наиболее полную версию видел в MochiKit.

MaxPayne 18.04.2009 15:16

Цитата:

Сообщение от Riim (Сообщение 16990)
Кусок из Jquery

Спасибо! А что-нибуь из прототайпа есть по этой теме?

Riim 18.04.2009 16:08

В PrototypeJs есть добавление/удаление обработчика, но обработки объекта события нет. Можно поискать плагин или дописать, выдрав нужное из Jquery и MochiKit.
upd:
>>> обработки объекта события нет
Хотя, нет, что-то вреде есть, но послабее чем в Jquery

MaxPayne 18.04.2009 22:13

Написал. Вроде все получилось =) Спасибо.
Правда проблема одна появилась...
Объявляю - document.onkeypress = keymove; (где keymove - функция обработки событий клавиатуры). Обработка событий клавиатуры работает, но вместе с ней работает и скроллбар вертикальный у документа. Как грамотнее сделать? Как отключить движение скроллбара с помощью клавиатуры?

Riim 18.04.2009 22:25

Может в самый первый момент нажатия запомнить положение scroll-а и при отпускании клавиши установить его через window.scrollTo .
Только все равно дергаться будет.
Не понимаю, почему не работает window.onscroll = function() {retutn false};
Вроде вполне логичный вариант.


Часовой пояс GMT +3, время: 08:10.