Войти

Показать полную графическую версию : [решено] addEventListener в Firefox не работает


Coutty
04-02-2008, 21:24
В Firefox (2.0.0.6) не работает скрипт с addEventListener:
<html><head><title>1</title>
<script>
document.addEventListener('KeyDown', function(ev) {
alert(ev.keyCode);
// bla-bla-bla
}, false);
</script>
</head> <body>
</body></html>
В Опере всё нормально.
Погуглил на эту тему - и не нашёл ничего полезного.

Что с ним можно сделать?
И вообще, будет ли это и в IE работать? (он у меня далеко - не могу проверить)

Sham
05-02-2008, 02:46
'KeyDown', »
в нижний регистр...будет ли это и в IE работать? »
IMHO нет....

Sham
05-02-2008, 03:39
Coutty, что-то типа этого будет
if (typeof window.document.addEventListener == 'function')
{
window.document.addEventListener('keydown', function(e) {
alert(e.keyCode);
}, false);
}
else if (typeof window.event == 'object')
{
window.document.onkeydown=function(){
alert(window.event.keyCode);
}
}

Coutty
05-02-2008, 09:29
Sham, спасибо, работает!

Только теперь ещё одна проблемка нарисовалась: при русской раскладке Firefox не показывает кейкоды буквенных клавиш. Выводится "0". В Опере норм - число больше тысячи.

Sham
05-02-2008, 22:37
Coutty, попробуй вместо e.keyCode »
e.which imo это системные штучки...

Coutty
06-02-2008, 12:24
Sham, не помогло.
Системные - в смысле, от системы зависят? Я только в линуксе проверял.

Sham
06-02-2008, 22:14
Coutty, вообще для отладки лучше windows, поскольку подавляющее большинство юзеров сидит в ней...от системы зависят? » это вопрос к производителям...

.... http://www.google.com/search?q=%2B%D0%BA%D0%BE%D0%B4%D1%8B+%2B%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D1%88+%2Bjavascript+keycode+w hich+%2B%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80 ...

Coutty
21-07-2008, 09:55
Sham, вот сейчас опять возник тот же вопрос. И ведь интересно, скажем, стрелки в файрфоксе обрабатываются через ev.keyCode, а буквы и пробел - через ev.which.
Пришлось объединять, чтоб всё сразу было:)

Вот такой код (если кому вдруг понадобится):

if (typeof window.document.addEventListener == 'function') // эта часть для FF
{
window.document.addEventListener('keypress',function(ev) {
if (ev.keyCode == 0)
keyHandler(ev.which);
else
keyHandler(ev.keyCode); // вызываем обработчик нажатий
}, false);
}
else if (typeof window.event == 'object') // эта - для Оперы
{
window.document.onkeypress = function() {
keyHandler(window.event.keyCode);
}
}

Sham
22-07-2008, 03:03
Coutty, я бы не парился и заюзал бы какой-нить фреймворк...

Coutty
24-07-2008, 16:04
Sham, да ради этих десяти строк кода искать фреймворк... У меня проект чисто игровой был. Вот я хотел, чтоб и в Опере и в ФФ управление работало. Ну а другие браузеры... отдыхают благодаря использованию canvas. Excanvas совсем не подходит для динамичной отрисовки.




© OSzone.net 2001-2012