Показать полную графическую версию : [решено] addEventListener в Firefox не работает
В 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 работать? (он у меня далеко - не могу проверить)
'KeyDown', »
в нижний регистр...будет ли это и в IE работать? »
IMHO нет....
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);
}
}
Sham, спасибо, работает!
Только теперь ещё одна проблемка нарисовалась: при русской раскладке Firefox не показывает кейкоды буквенных клавиш. Выводится "0". В Опере норм - число больше тысячи.
Coutty, попробуй вместо e.keyCode »
e.which imo это системные штучки...
Sham, не помогло.
Системные - в смысле, от системы зависят? Я только в линуксе проверял.
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 ...
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);
}
}
Coutty, я бы не парился и заюзал бы какой-нить фреймворк...
Sham, да ради этих десяти строк кода искать фреймворк... У меня проект чисто игровой был. Вот я хотел, чтоб и в Опере и в ФФ управление работало. Ну а другие браузеры... отдыхают благодаря использованию canvas. Excanvas совсем не подходит для динамичной отрисовки.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.