проблема перехвата нажатия клавиш управления в Файрфокс
Привет всем!
Столкнулся с проблемой разницы работы в разных браузерах. Написал браузерную версию игры Змейка. Управление стандартными клавишами (вверх, вниз, вправо, влево). Работает во всех браузерах (даже IE), кроме Файрфокса. document.addEventListener("keydown" ,function (event){ switch(event.keyCode){ case 40: ..... } До входа в цикл нажатие принимается полностью (т.е. нажал вниз, следующим шагом после старта будет движение вниз, нажал вниз, вверх - следующим шагом будет вверх и т.п.), но после запуска движения змейки timerId = setInterval(nextStep, 200); перестает реагировать на нажатие клавиш. (рабочая версия: http://runwave.ru/) Если кто сталкивался, подскажите в какой части смотреть |
наверное нет, проблема только в файрфоксе и только в цикле. Остальные браузеры работают нормально.
|
Проблему у себя локально нашёл - место где выключается - но как-то всё магически смотрится:
после запуска игры отключаю кнопки "New game" и "Start" соответственно функциями: document.getElementById('startButton').setAttribut e('disabled','disabled'); document.getElementById('newGameButton').setAttrib ute('disabled','disabled'); - обе кнопки сгенерированы кодом JS при загрузке игры. <div class='buts placeButtons'><button id='newGameButton' onclick='newGame();'>New Game</button><button id='startButton' onclick='startGame();'>START</button></div> Если комментирую строку: document.getElementById('startButton').setAttribut e('disabled','disabled'); то клавиши начинают работать. Причем, если комментирую другую строку отдельно, то это не помогает. Пробовал переименовать клавишу в startButton1, это не помогает тоже не помогает. т.е. вопрос конкретно в этой строке, и даже не в порядке строк (пробовал менять местами). Дальше попробую разобраться. Но поведение файрфокса для меня пока непонятно. |
Попробовал заменить функцию на этот код, не срабатывает.
Попробовал сделать вызов через функцию, через .onclick и т.п. Поменял синтаксис блокирования клавиш: document.getElementById('startButton').disabled = true; вместо document.getElementById('startButton').setAttribut e('disabled','disabled'); тоже не помогает. Пока блокируется клавиша старт, файрфокс блокирует считывание клавиатуры. Как только перестаю блокировать клавишу старт, файрфокс начинает работать. (Остальные браузеры на этот пункт не заморачиваются, только файрфокс.) Там возникают другие ошибки. |
Понял идею, реализовал, работает.
Благодарю! |
Часовой пояс GMT +3, время: 03:14. |