在JavaScript中按CTRL键检查右ALT

时间:2017-01-16 14:23:20

标签: javascript html browser keyboard-events

我有这样简单的代码:



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>
&#13;
&#13;
&#13;

在谷歌浏览器中,与Firefox和IE10相同,当您按下右键时e.ctrlKey设置为true,我尝试通过添加全局变量ctrl来修复它并将其设置为true keydown并在keyup上设置为false,但是没有修复它,因为当你按下右键时,键盘为 CTRL 被触发,而keyup则相同。

这是一个错误还是在某个规范中?

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

1 个答案:

答案 0 :(得分:1)

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

因此从它获取 Ctrl Key和 Alt 键是正常的。