JavaScript 键盘事件和比较

标签 javascript events keyboard

我编写了一个函数,该函数应该检查是否按下了某个特定按钮。然而,它似乎总是返回 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/

相关文章:

javascript - 如何检查reducers提交的内容是否真实

python - 带有两个 slider 的交互式 matplotlib 图

javascript - 当我在键盘上按下 'z' 时,我希望它更改具有 sound1.wav 的键 "a"现在按下时播放 sound2.wav

wpf - 在事件上使用 Setter

android - 事件打开/关闭弹出窗口

javascript - React 事件处理程序按钮单击在第一次单击时不起作用

C++/Win32 : Keyboard input to a non-foreground window

javascript - 如何将标签 ID 传递给 .js 文件并更改标签颜色?

javascript - 如何将动态单选按钮绑定(bind)到 Ember 中的 Controller 属性

javascript - 无法获取列表的长度