Обработка событий клавиатуры
Есть на странице три дива.
1. Первый див. 2. Второй див и перемещающийся по нему третий див. Нужно сделать так, чтобы по щелчку на первый див можно было с помощью клавиатуры управлять им. По щелчку на второй див - можно было бы управлять третьим. По щелчку на свободной от дивов области управлять окном браузера (по стандарту). |
А проблема в чем?
|
Прописываю в onkeypress второго дива функцию, по которой происходит сдвиг третьего дива внутри второго, но управление по прежнему остается окна браузера, а не необходимого дива.
|
Откуда у дива возьмется событие keypress?
|
Ясно. С мышью тут конечно проще, а как поступить в таком случае с клавиатурой?
|
Кусок из 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. |
Цитата:
|
В PrototypeJs есть добавление/удаление обработчика, но обработки объекта события нет. Можно поискать плагин или дописать, выдрав нужное из Jquery и MochiKit.
upd: >>> обработки объекта события нет Хотя, нет, что-то вреде есть, но послабее чем в Jquery |
Написал. Вроде все получилось =) Спасибо.
Правда проблема одна появилась... Объявляю - document.onkeypress = keymove; (где keymove - функция обработки событий клавиатуры). Обработка событий клавиатуры работает, но вместе с ней работает и скроллбар вертикальный у документа. Как грамотнее сделать? Как отключить движение скроллбара с помощью клавиатуры? |
Может в самый первый момент нажатия запомнить положение scroll-а и при отпускании клавиши установить его через window.scrollTo .
Только все равно дергаться будет. Не понимаю, почему не работает window.onscroll = function() {retutn false}; Вроде вполне логичный вариант. |
Часовой пояс GMT +3, время: 08:10. |