【发布时间】: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