javascript - CTRL 键检查 javascript 中的右 ALT

标签 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>

在 google chrome 中,与 Firefox 和 IE10 中相同,当您按右 alt 时,e.ctrlKey 设置为 true,我尝试通过添加全局变量 ctrl 并设置它来修复它在 keydown 上设置为 true 并在 keyup 上设置为 false 但这并没有解决问题,因为当您按 CTRL 的右 alt keydown 时会被触发,对于 keyup 也是如此。

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

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

最佳答案

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

所以从中获取Ctrl键和Alt键是正常的。

关于javascript - CTRL 键检查 javascript 中的右 ALT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41678553/

相关文章:

html - 如何修复不兼容的 HTML 以便 Expat 解析它(htmltidy 不工作)

windows-phone-7 - 在 windows phone 7 浏览器中流式传输音频

iframe - 为什么浏览器允许在 iframe 的父(跨)域上设置 cookie?

javascript - 通过JS获取用户个人信息

javascript - 如何从 iframe 刷新父窗口?

javascript - 在不降低图片质量的情况下减小javascript中的图像大小并下载图像

javascript - Flot:如何在条形图中设置数字样式?

javascript - 使用 jquery 从 URL 获取值,而不是 php

html - 如何使用CSS选择div中的第一个标签?

javascript - PapaParse 如何从 http 流式传输?