我编写了一个函数,该函数应该检查是否按下了某个特定按钮。然而,它似乎总是返回 false。这是函数:
function keyPressed(ev) {
var r = false;
document.onkeypress = function(e) {
if (ev == e.which || ev == e.keyCode) {
r = true;
}
}
return r;
}
这就是你如何调用它:
if (keyPressed(119)) {
// do something
}
检查警报,当我按“W”时,它们似乎是相同的数字,但该函数总是返回 false。它们是不同类型的吗?
最佳答案
document.onkeypress
将在每次按键时执行。但是keyPressed
只有当你调用它时才会被执行。因此,除非您在按下 touch 的同时启动 keyPressed(touch)
,否则它将始终返回 false。
你所做的是:当我调用keyPressed(
)时,将一个函数绑定(bind)到document.onkeypress
。然后返回r,它没有被绑定(bind)修改。
我建议你尝试在一个大的 document.onkeypress
函数中放置一个带有回调的类似开关的结构。
额外奖励:e.已弃用,如果可能,请使用 e.key。
关于JavaScript 键盘事件和比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29060086/