Javascript:Keydown Event:Клавиша со стрелкой «вверх» предотвращает дальнейшие события со стрелкой-keydown? (отвечено:ореолы клавиатуры)

я нашел много связанных вопросов (здесь и в другом месте), но конкретно этот не нашел.

Я пытаюсь прослушивать события нажатия клавиш для клавиш со стрелками (37-40), однако при использовании клавиш со стрелками в определенном порядке последующие стрелки не генерируют события «нажатие клавиши».

Пример: http://blog.pothoven.net/2008/05/keydown-vs-keypress-in-javascript.html

  1. На этой странице щелкните в поле «введите здесь ->».
  2. Нажмите и удерживайте клавишу со стрелкой вправо:таблица обновится до кода 39
  3. Продолжая удерживать клавишу со стрелкой вправо, нажмите и удерживайте клавишу со стрелкой вверх:таблица обновится до 38
  4. Продолжая удерживать вправо и клавиши со стрелками вверх, нажмите и удерживайте клавиша со стрелкой влево :таблица не обновляет

Однако, если я сделаю то же самое, но используя клавишу со стрелкой вниз вместо клавиши со стрелкой вверх , тогда он работает так, как ожидалось.

Кроме того, если я использую клавиатуру вместо клавиш со стрелками, все работает должным образом.

Я препятствую нормальному функционированию события 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» каждый раз, когда я начинаю удерживать новую клавишу.

Однако, если я удерживаю стрелку вправо, затем стрелку вверх, а затем стрелку влево, я не вижу обновления «Недавние нажатия клавиш» для клавиши со стрелкой влево.

9
задан ElleryTheJones 22 April 2012 в 14:25
поделиться