[英]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.