2017-01-16 3 views
0

Ich habe einfach folgenden Code:STRG-Taste Check für rechts ALT in 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>

Und in Google Chrome die gleiche wie in Firefox und Internet Explorer 10, wenn Sie mit der rechten alt drücken Sie die e.ctrlKey ist Auf True gesetzt, habe ich versucht, es zu beheben, indem ich die globale Variable ctrl und setzen Sie es auf Keydown auf true gesetzt und auf false gesetzt, aber das hat es nicht behoben, weil, wenn Sie rechts Alt Taste für CTRL gedrückt und gedrückt wird das selbe für keyup.

Ist das ein Fehler oder irgendwo in einer Spezifikation?

Gibt es eine Möglichkeit zu wissen, ob Links Alt gedrückt wurde ohne Ctrl Schlüssel?

Antwort

1

Rechts Alt, in der Regel Alt Gr, ist in der Tat entspricht Ctrl +Alt. Ich weiß nicht warum, aber es ist so.

So ist es normal, sowohl Ctrl Key und Alt Key von ihm zu bekommen.

+0

Danke für die Klarstellung. Ich habe das gerade auf einem anderen Laptop getestet, der nicht Alt Gr und nur Alt auf der Tastatur hat und einen Keydown/Keyup für die richtige Alt sendet. – jcubic