защо би се случило това? - странни събития 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

Това е специфично за моята машина. Защо би се случвало това?

Забележка: Открих тази странност във флаш, където 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 е заседнал :) Трябва да кажа, че за първи въпрос в сайта това е добре написан въпрос. Добре дошли в SO!   -  person Domino    schedule 15.07.2015
comment
CTRL + d е пряк път за маркиране на страница във всички (поне стандартни) браузъри (т.е. firefox, chrome, opera, safari, ...) Тествах кода в 6 от тях в моя Windows 7 и никога не получих необичаен резултат! За флаш, говориш ли за самостоятелен флаш плейър, в браузъра или просто когато тестваш своя swf във flash ide?   -  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 = d

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


Относно манипулатора на събития:

Методът addEventHandler има трети параметър, известен като useCapture, който управлява реда на изпълнение по време на фазата на заснемане или бълбукане. Фазата на улавяне се задейства веднага след задействане на събитието. Фазата на бълбукане се задейства при излизане от задействаното събитие.

person THE AMAZING    schedule 12.08.2015