我正在制作一个键盘映射器(它基本上允许我们检查同时按下的多个键),但我遇到了一个问题。
问题是它不会检测到所有按下的键。例如:we pressed 10 keys but the code says that only 7 keys are being pressed
,例如we pressed 6 keys but the code says that only 4 keys are being pressed
,是的,它是随机的......
那么解决方案是什么?
注意:
addEventListener
和其他方法谢谢!
以下是代码:
var obj = {};
$(document).ready(function() {
document.addEventListener("keydown", function(event) {
obj[event.keyCode] = true;
$("#output").text("" + JSON.stringify(obj));
});
$(document).keyup(function() {
obj[event.keyCode] = false;
$("#output").text("" + JSON.stringify(obj));
});
});
<!DOCTYPE HTML>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<p>"PRESS ANY KEY"</p>
<p>KeyDown:
<p id="output"></p>
</p>
<br/>
</body>
</html>
答案 0 :(得分:0)
问题不在于JavaScript,而在于键盘本身。它被称为键盘重影,有great article from Microsoft itself解释它。
&#34;重影&#34;问题是当同时按下多个键时某些键盘键不起作用。据说那些没有出现在计算机上或者似乎已经消失的关键按键已经被重复了#34;。在大多数键盘上,甚至一些明确销售为&#34; Anti-Ghosting,&#34;这有三个关键组合。想象一下,玩你最喜欢的视频游戏而不能说,对角线运行并同时发射你的武器(比如同时按a,w和g)。这是大多数现有键盘的内部设计的结果,如下所述。
您的代码是正确的,可以使用支持多重键盘。