按住 4 键后多键输入失败

Multiple Key Inputs Fail After 4 Keys Held

对编程有点陌生,做了一个测试演示来弄清楚按键输入是如何工作的。在我开始注意到某些密钥未被注册之前,该演示看起来不错。我只是按住 q -> w -> e -> r -> t 并且 t 没有出现在输出中,除非我释放其他键。这是我的代码,非常基础。

var p1 = document.getElementById("p1");
var keys = [];

document.addEventListener("keydown", function(e) {
  keys[e.keyCode] = true;
  update();
});

document.addEventListener("keyup", function(e) {
  keys[e.keyCode] = false;
  update();
});

function update() {
  console.log(keys);

  p1.innerText = "";

  for (i = 0; i < keys.length; i++) { //checks the entire array and outputs the arr position, which is the keycode, if true
    if (keys[i]) {
      p1.innerText += i + " | ";
    }
  }
}
<p id="p1">testing</p>

关于为什么第 5 个输入有时不映射的任何想法?有办法解决这个问题吗?

这是特定于硬件的,取决于 "rollover" 您的 OS、键盘和可能存在问题的软件(浏览器)施加的限制。例如,在我的系统上,您的代码可以正确触发 q+w+e+r+t+y,但不能触发第七个键。所以,看来你的最大值是 4,而我的是 6。

回答您的具体问题:

Any ideas on why the 5th input sometimes doesn't map?

简而言之,因为某些东西——可能是键盘本身,但也可能是您计算机中的其他硬件或软件——忽略了额外的键。

Are there ways to get around this?

不可靠,因为它可能适用于某些用户,但您不能在网络上部署这样的代码并期望它适用于所有用户。一些较旧的硬件可能一次只支持 2 个键。