当前位置: 首页 > 知识库问答 >
问题:

带有多个键的Javascript“keydown”无法正常工作[重复]

汪胡非
2023-03-14

我正在制作一个键盘映射器(它基本上允许我们检查同时按下的多个键),但我遇到了一个问题。

例如:我们按了10个键,但代码显示只有7个键被按下,例如我们按了6个键,但代码显示只有4个键被按下,是的,这是非常随机的……

那么解决办法是什么呢?

注意:

    < li >我已经尝试了< code>addEventListener和其他方法 < li >我已经尝试过其他人制作的键盘映射器,但是他们都有相同的问题(至少我遇到过的问题) < li >我愿意接受其他方法(除此之外) < li >我是新手,所以...是啊:p

谢谢大家!

以下是代码:

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>

共有1个答案

羊时铭
2023-03-14

问题不在于 JavaScript,而在于键盘本身。它被称为键盘重影,微软本身有一篇很棒的文章解释了它。

“重影”是指当同时按下多个键时,一些键盘键不起作用的问题。在计算机上没有显示或似乎已经消失的按键被称为“重影”。在大多数键盘上,即使是一些明确宣传为“反重影”的键盘,这种情况也会发生在许多三种组合键上。想象一下,玩你最喜欢的电子游戏时,不能同时对角运行和发射武器(例如同时按下a、w和g)。这是大多数现有键盘内部设计的结果,如下所述。

您的代码是正确的,可以与多按感知键盘一起工作。

 类似资料:
  • 问题内容: 我正在尝试使用node-imagemagick库调整图像的大小,但无法正常工作。 我用来调整大小的代码是 引发错误 问题答案: 在Windows上,您还需要安装imagemagick exe。nodejs imagemagick库只是imagemagick exe的包装器。因此,只有安装了imagemagick exe并转换并标识可执行文件在路径中后,它才能起作用。

  • 问题内容: 我在linux ubuntu 17.10上运行代码 此代码返回“无限” 但是每当我从终端运行命令时,我都会得到1024。 为什么这些数字不同? 问题答案: 如果从命令行运行相同的命令,则会得到相同的结果: 这是因为仅查看紧随其后的参数。的不是此参数的一部分,并且被代替而不是分配作为位置参数()。 要运行,需要成为该参数的一部分: 换句话说,您应该使用:

  • 问题内容: 为什么会获得以下JavaScript代码? 问题答案: 此时,您正在调用函数,页面的其余部分尚未呈现,因此该元素当时不存在。尝试调用您的函数。像这样:

  • 问题内容: 我做了一个test.html文档来测试脚本。不知何故它不起作用,我不明白为什么什么也没发生。该脚本位于-tags中,并带有-tag,而css也具有- tags。为什么不起作用?这是代码 问题答案: 由于用于绑定事件处理程序的代码是在元素存在于中之前执行的,因此事件未绑定到元素上。 要解决此问题,您可以 将您的代码包装在回调中,以便在加载完成后执行您的代码 将您的脚本移动到的末尾,以便所

  • 问题内容: 我正试图将网页嵌入iframe中,但它根本不起作用。具有相对路径的内部页面正常显示。但是这个简单的代码不起作用: 应该显示iframe的地方是空的。我在页面源代码中查找,之后没有任何内容 怎么会这样? 问题答案: Google使用X-FRAME-OPTIONSHTTP标头禁止将其页面放置在iframe中:: //developer.mozilla.org/en/The_X-FRAME-

  • 问题内容: 我试图使用jQuery和CodeIgniter使用JSON进行我的第一个AJAX调用。但是出于某些奇怪的原因,它不起作用。 jQuery代码: CodeIgniter代码: 我尝试手动访问该页面,但似乎可以正常工作,我得到了: 我还尝试使用Firebug进行查看,但什么也没看到。 我不知道我在做什么错…真的很需要帮助。谢谢。 问题答案: 您可能需要设置HTTP内容类型才能使其正常工作: