无法使键控/键控与指针锁定/全屏一起使用



我的问题是,我最近开始将HTML5 Web应用程序更改为使用全屏+指针锁定,而不是在窗口中拖动鼠标。该应用程序除了使用鼠标外,还使用键盘,以前一切都很好。然而,现在我无法让任何类型的按键工作。指针锁定鼠标可以完美工作。

以前我听过这样的按键:

document.onkeydown = handleKeyDown;
document.onkeyup = handleKeyUp;

其中handleKeyDown和Up是函数,例如:

function handleKeyUp(event) {
    doStuffWith(event.keyCode);
}

现在,我在mousemove监听器旁边添加了键盘监听器:

document.addEventListener('keyup', handleKeyUp(event), false);
document.addEventListener('keydown', handleKeyDown(event), false);

其中handleKey*与上述相同,但doStuffWith不起任何作用。它似乎得到了一些未定义的事件,而没有其他任何东西。这可能是一个相当初级的问题,但我很难解决。我在谷歌上找到的大多数例子和教程都没有使用addEventListener,而是使用我以前使用的旧风格。

我非常感谢你的帮助。

edit//澄清:由于事件是未定义的,因此根本不会调用doStuffWith,因为在尝试读取未定义的.keyCode时执行停止

主要问题是,根据以下MDN页面,字母数字键在全屏模式下被禁用:

https://developer.mozilla.org/en/DOM/Using_full-screen_mode#Things_your_users_want_to_know

您的代码也存在一些问题。在线

document.addEventListener('keyup', handleKeyUp(event), false);

您有两个问题:第一,第二个参数需要是对函数的引用。它实际上是对undefined的引用,因为您要立即调用函数并传递结果,而不是传递函数。其次,在支持addEventListener的浏览器中,Event对象会自动传递到事件侦听器函数中。因此,你想要的是:

function handleKeyUp(e) {
    doStuffWith(e.keyCode);
}
document.addEventListener('keyup', handleKeyUp, false);

最新更新