繁体   English   中英

无法让 keydown / keyup 与指针锁定/全屏一起使用

[英]Can't get keydown / keyup to work with pointer lock / fullscreen

我的问题是我最近开始将我的 HTML5 webapp 更改为使用全屏 + 指针锁定,而不是在窗口中拖动鼠标。 该应用程序除了鼠标外还使用键盘,以前一切正常。 但是,现在我无法使用任何类型的按键。 指针锁定鼠标完美运行。

以前我听过这样的按键:

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不做任何事情。 它似乎得到了一些未定义的事件,没有别的。 这可能是一个相当基本的问题,但我很难解决它。 我在 Google 上找到的大多数示例和教程都没有使用addEventListener ,而是使用了我之前使用的旧样式。

我非常感谢任何帮助。

编辑 // 澄清:由于事件未定义, 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM