【问题标题】:CTRL key check for right ALT in javascriptCTRL键在javascript中检查正确的ALT
【发布时间】:2017-01-16 14:23:20
【问题描述】:

我有这样的简单代码:

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,我尝试通过添加全局变量 ctrl 并在 keydown 上将其设置为 true 并设置为来修复它false on keyup 但这并没有解决它,因为当您按下 CTRL 的右 alt keydown 时会触发并且 keyup 也是如此。

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

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

【问题讨论】:

    标签: javascript html browser keyboard-events


    【解决方案1】:

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

    所以从里面获取Ctrl Key和Alt Key都是正常的。

    【讨论】:

    • 感谢您的澄清。我刚刚在另一台没有 Alt Gr 并且键盘上只有 Alt 的笔记本电脑上对此进行了测试,它会发送一个 keydown/keyup 以获得正确的 alt。
    猜你喜欢
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 2014-09-12
    • 2011-02-17
    • 2014-01-09
    • 1970-01-01
    相关资源
    最近更新 更多