Javascript 检查键盘状态

标签 javascript dom-events key-bindings

我正在制作一个简单的 Javascript 游戏,需要能够检查是否按下了某些键。我已经尝试绑定(bind)到 onkeydown 事件,但我遇到的问题是双重的:首先,它不会让我检查是否随时按下了多个键。其次,在开始发送垃圾邮件事件之前,它会在按住键后暂停。

在我的代码中,我可以有一个事件,或者一个函数,每毫秒检查一次键是否被按下。既然这是一个游戏,我真的没有问题。

最佳答案

您可以同时使用 onkeydown 和 onkeyup:

var pressed={};
element.onkeydown=function(e){
     e = e || window.event;
     pressed[e.keyCode] = true;
}

element.onkeyup=function(e){
     e = e || window.event;
     delete pressed[e.keyCode];
}

使用此代码,您可以将每个按下的键代码存储在 pressed 变量中,然后在释放键时将其删除。因此,当您需要知道按下了哪些键时,您可以使用 for(..in..) 循环遍历按下的对象。

关于Javascript 检查键盘状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4426946/

相关文章:

javascript - 如何在reactjs中不使用refs来重置字段的值?

javascript - Ajax/Javascript 删除确认文本而不使用对话框

具有多个击键的 Emacs 键绑定(bind)

c# - WPF 用户控件,带有按钮和按键绑定(bind)

python - 如何将回车键绑定(bind)到 tkinter 中的函数?

javascript - 选择了哪个单选按钮?模态结果显示

javascript - 如何在 express js 中使用 get 方法从 mongo db 中获取数据?

javascript - onClick 事件在 React redux ToDoList 应用程序中未触发

javascript - 如何捕获页面上的所有滚动事件,而不将 onscroll 处理程序附加到每个容器

javascript - scriptaculous draggables : need to cancel onClick action when element is dragged