почему это произошло? - странные события keyup keydown на моей машине

Вот немного javascript:

window.addEventListener("keydown", function(event) {
        console.log("keydown: " + event.keyCode);
    });
window.addEventListener("keyup", function(event) {
        console.log("keyup: " + event.keyCode);
    });

Вот результат моего нажатия и отпускания клавиши только один раз:

keyup: 17
keydown: 68
keyup: 17
keyup: 68

Это конкретно для моей машины. Почему это происходит?

Примечание. Я обнаружил эту странность во flash, где события KeyboardEvents срабатывали таким же образом.


person James Lucas    schedule 15.07.2015    source источник
comment
Это может быть связано с тем, что это ctrl+d, который в Chrome является ярлыком для добавления страницы в закладки, поэтому страница теряет фокус после появления предупреждения о закладке.   -  person depperm    schedule 15.07.2015
comment
Итак, ваш ключ управления застрял? :)   -  person epascarello    schedule 15.07.2015
comment
Поведение браузеров меняется при работе с событиями комбинации клавиш CTRL. И ваша клавиша CTRL застряла :) Должен сказать, что для первого вопроса на сайте это хорошо написанный вопрос. Добро пожаловать в СО!   -  person Domino    schedule 15.07.2015
comment
CTRL + d — это ярлык для добавления страницы в закладки во всех (по крайней мере, стандартных) браузерах (например, Firefox, Chrome, Opera, Safari, ...). Я протестировал код в 6 из них в Windows 7 и никогда не получал ненормальных результат ! Что касается флэш-памяти, вы говорите об автономном флэш-плеере, в браузере или просто при тестировании вашего swf во флеш-идее?   -  person akmozo    schedule 16.07.2015
comment
Эти результаты получены только при нажатии и отпускании клавиши D. Клавиша Ctrl на самом деле никогда не трогается. Если я нажму и отпущу клавишу Ctrl, результаты покажут, что я дважды нажал Ctrl, а затем дважды отпустил Ctrl.   -  person James Lucas    schedule 16.07.2015
comment
В качестве примечания, я проверил, были ли проблемы с залипанием клавиш, но это было не так.   -  person James Lucas    schedule 16.07.2015
comment
Пробовали ли вы запустить код на другом компьютере и/или подключить другую клавиатуру, просто чтобы исключить возможность проблемы с клавиатурой? Правильно ли работает клавиша D в других приложениях (например, в текстовом редакторе), использующих ту же клавиатуру?   -  person Mindwalker2076    schedule 11.08.2015


Ответы (1)


согласно: http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

  • код 17 = Ctrl
  • код ключа 68 = д

Ваш код обнаруживает, что клавиша CTRL отпускается, когда вы нажимаете клавишу d. Это относится не только к вашей машине, но и к вашим периферийным устройствам или вредоносным программам, работающим на вашей машине, или к чрезмерному количеству выполняемого кода.


Об обработчике событий:

Метод addEventHandler имеет третий параметр, известный как useCapture, который обрабатывает порядок выполнения на этапе захвата или всплытия. Фаза захвата запускается, как только происходит событие. Фаза всплытия запускается при выходе из инициированного события.

person THE AMAZING    schedule 12.08.2015