Как захватить ALT + N при нажатии клавиш в JavaScript - PullRequest
0 голосов
/ 14 октября 2018

У меня есть простой код, который записывает код нажатой клавиши, например:

window.addEventListener('keypress', function(e) {
  console.log(e.keyCode);
})

Кажется, что это работает для Alt + в значительной степени для любого другого на моей клавиатуре. За исключением Alt + N . Кажется, что событие вообще не регистрируется!Кажется, что работает N (без Alt ), как и другие комбинации, такие как Ctrl + N .Когда я набираю Alt + N , ничего больше не происходит, поэтому, насколько я знаю, система не зарезервирована системой.Я использую Chrome на Mac.

Это просто что-то не так с моим компьютером или это происходит с другими?Если это происходит для других, почему это происходит, и есть ли способы обнаружить это?

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Использование события keypress не работает для меня для Alt + N и для любой комбинации с Alt .Некоторые комбинации работают с Ctrl , а некоторые нет.

Однако, когда я прослушиваю события keydown и keyup, я могу регистрировать эти события.Итак, я думаю, вы могли бы прослушать событие keydown на Alt и, если есть событие keydown для N до того, как Alt сгенерирует keyup,Вы успешно обнаружили комбо Alt + N .

Хотя я не уверен, почему это происходит.

РЕДАКТИРОВАТЬ

В соответствии с документацией Mozilla ,

Событие нажатия клавиши вызывается при нажатии клавиши, которая выдает символьное значение.Примерами клавиш, которые выдают символьное значение, являются буквенные, цифровые клавиши и знаки пунктуации.

Примерами клавиш, которые не выдают символьное значение , являются клавиши-модификаторы, например Alt,Shift, Ctrl или Meta .

Что касается того, почему некоторые ярлыки работают в Chrome, а другие нет, Mozilla говорит

Chrome не запускает событие нажатия клавиш для известных сочетаний клавиш. То, какие сочетания клавиш известны, зависит от системы пользователя .Используйте событие keydown для реализации сочетаний клавиш.

0 голосов
/ 14 октября 2018

Попробуйте:

window.addEventListener('keydown', function(e) {
  if (e.altKey == true && e.keyCode == 78)
    console.log('Alt + N'); 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...