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

keydown事件没有触发,为什么?

江天宇
2023-03-14

在JavaScript中,我按住两个键,并且keydown被完美触发。当我释放其中一个键时,keyup被触发。到目前为止一切都很好。但是我仍然按住一个键,那么为什么keydown没有被触发呢?我需要在我的游戏中发生这种情况。我做错了什么吗?这是预期的反应吗?有什么解决办法吗?

window.addEventListener("keydown",
function (e) {
    console.log('down');
}, false);

window.addEventListener('keyup',
function (e) {
    console.log('up');
}, false);

共有1个答案

羊舌承天
2023-03-14

在我看来你想做这样的事:

var down = false;
var up = false;
document.body.addEventListener('keydown', function (e) {
    if(e.which === 40) {
        down = true;
    }
    
    if(e.which === 38) {
        up = true;
    }
});

document.body.addEventListener('keyup', function (e) {
    if(e.which === 40) {
        down = false;
    }
    
    if(e.which === 38) {
        up = false;
    }
    
    // logic here for one but not the other
    if(down && !up) {
        alert('down but not up!');
    }
});
 类似资料:
  • 问题内容: 模拟用户在JS和/或jQuery中的文本输入框中输入文本的最佳方法是什么? 我 不 希望居然把文本输入框,我只是想触发所有的事件处理程序,通常会得到用户输入信息到一个输入框触发。这意味着聚焦,按下键,按下键,按下键和模糊。 那么,一个人如何做到这一点呢? 问题答案: 您可以通过直接调用事件来触发任何事件,如下所示: 那会做你想做的事吗? 您可能还应该触发并可能 如果要使用特定键触发键事

  • 我遇到了一个奇怪的JavaScript问题。我正在开发一个使用键盘输入的HTML5画布游戏。游戏的双人模式需要按住键盘上最多6个键。 在我按住键盘上的4或5个键后,似乎停止调用“keyDown”事件。 我使用的代码如下: 控制台应该为我按下的每个键记录一个键代码。然而,它似乎只报告我按住的前4或5个键的密码。这导致了当两个玩家按下太多键时,我的游戏的双玩家版本的控件无法工作。 这是一个bug,是J

  • 我正在学习Java,正在使用java 8,spring 5.3.9和Apache Tomcat 9。我已经将我的jar文件添加到我的构建路径中的类路径中,将Apache Tomcat添加到我的服务器中,我的项目运行得非常好。现在我开始使用beans和xml文件,我遇到了一个问题。我的代码的一部分被触发,另一部分被忽略。 我有以下界面 FortuneService.java: 和一个快乐财富服务类:

  • 问题内容: 我想对一个模拟占位符的指令进行单元测试,其中仅在键入/按下事件时才清除输入值。 问题答案: 您需要以编程方式创建一个事件并触发它。为此,将jQuery用于单元测试非常有用。例如,您可以编写一个简单的实用程序,如下所示: 然后在您的单元测试中使用它,如下所示: 您可以在http://angular-ui.github.io/bootstrap/项目中查看此技术的实际应用:https :

  • 使用mui.trigger()方法可以动态触发特定DOM元素上的事件。 .trigger( element , event , data ) element Type: Element 触发事件的DOM元素 event Type: String 事件名字,例如:'tap'、'swipeleft' data Type: Object 需要传递给事件的业务参数 示例 自动触发按钮的点击事件: var

  • 问题内容: 当值由设置时,事件处理程序中的逻辑未运行,但当用户使用鼠标选择值时,该逻辑确实运行。为什么是这样? 问题答案: 因为该事件需要由用户而不是通过JavaScript代码启动的实际浏览器事件。 而是这样做: 要么