я нашел много связанных вопросов (здесь и в другом месте), но конкретно этот не нашел.
Я пытаюсь прослушивать события нажатия клавиш для клавиш со стрелками (37-40), однако при использовании клавиш со стрелками в определенном порядке последующие стрелки не генерируют события «нажатие клавиши».
Пример: http://blog.pothoven.net/2008/05/keydown-vs-keypress-in-javascript.html
Однако, если я сделаю то же самое, но используя клавишу со стрелкой вниз вместо клавиши со стрелкой вверх , тогда он работает так, как ожидалось.
Кроме того, если я использую клавиатуру вместо клавиш со стрелками, все работает должным образом.
Я препятствую нормальному функционированию события keydown (, возвращая false в прослушивателе событий и вызывая preventDefault()), но поведение сохраняется.
Я думал, что это может быть моя клавиатура, но это происходит как на ноутбуке, так и на машине друга.
Кто-нибудь знает, что происходит? Или есть хорошие идеи обходных путей?
[править] Вот пример того, что я имею в виду. Я понимаю, что это может работать не во всех браузерах, но я просто собрал это вместе на своем ноутбуке, чтобы продемонстрировать, что происходит у меня (в chrome на w7, а также в chrome и Safari на mac os 10.6.8)
Up:
Down:
Left:
Right:
Recent Keydown:
Опять же, проблема:Если я удерживаю A, затем S, затем D, затем F,затем G, вы можете увидеть обновление «Recent Keydown» каждый раз, когда я начинаю удерживать новую клавишу.
Однако, если я удерживаю стрелку вправо, затем стрелку вверх, а затем стрелку влево, я не вижу обновления «Недавние нажатия клавиш» для клавиши со стрелкой влево.