javascript 中的 CTRL 键检查右 ALT

CTRL key check for right 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>

并且在 google chrome 中与在 Firefox 和 IE10 中一样,当您按右 alt 时 e.ctrlKey 设置为 true,我尝试通过添加 global 来修复它变量 ctrl 并在 keydown 上将其设置为 true 并在 keyup 上设置为 false 但这并没有解决它,因为当你按下右 alt keydown 时 CTRL 被触发并且 keyup 相同。

这是一个错误还是某个地方的规范?

有没有办法知道是否在没有 Ctrl 键的情况下按下了左 alt?

Alt,通常是Alt Gr,确实相当于Ctrl+Alt。我不知道为什么,但确实如此。

所以从中得到Ctrl键和Alt键是正常的