2017-01-16 8 views
0

У меня есть простой код, как это:CTRL проверить ключ для правой ALT в JavaScript

var input = document.getElementsByTagName('input')[0]; 
 
var pre = document.getElementsByTagName('pre')[0]; 
 
var ctrl = false; 
 
input.addEventListener('keydown', function(e) { 
 
    if (e.which == 17) { 
 
    ctrl = true; 
 
    } 
 
    pre.innerHTML += 'keydown: ' + JSON.stringify({ 
 
    location: e.location, 
 
    ctrlKey: ctrl, 
 
    altKey: e.altKey, 
 
    which: e.which 
 
    }) + '\n'; 
 
}); 
 
input.addEventListener('keyup', function(e) { 
 
    if (e.which == 17) { 
 
    ctrl = false; 
 
    } 
 
    pre.innerHTML += 'keyup: ' + JSON.stringify({ 
 
    location: e.location, 
 
    ctrlKey: ctrl, 
 
    altKey: e.altKey, 
 
    which: e.which 
 
    }) + '\n'; 
 
});
<input> 
 
<pre> 
 
</pre>

И в Google Chrome так же, как в Firefox и IE10 при нажатии правого альта e.ctrlKey является set to true, я пытаюсь исправить это, добавив глобальную переменную ctrl и установив ее в true при keydown и установив false на keyup, но это не исправить, потому что когда вы нажимаете right alt keydown для CTRL уволен и то же самое для keyup.

Это ошибка или это где-то в спецификации?

Есть ли способ узнать, был ли нажат левый Alt без Ctrl ключ?

ответ

1

правый Alt, как правило, Alt Gr, действительно эквивалентно Ctrl + Alt. Я не знаю почему, но это так.

Так это нормально, чтобы получить как Ctrl Key и Alt ключ от него.

+0

Спасибо за разъяснение. Я только что протестировал это на другом ноутбуке, у которого нет Alt Gr и просто Alt на клавиатуре, и он отправляет один keydown/keyup для правого alt. – jcubic

 Смежные вопросы

  • Нет связанных вопросов^_^