Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t使keydown/keydup使用指针锁定/全屏_Javascript_Html_Events_Javascript Events - Fatal编程技术网

Javascript Can';t使keydown/keydup使用指针锁定/全屏

Javascript Can';t使keydown/keydup使用指针锁定/全屏,javascript,html,events,javascript-events,Javascript,Html,Events,Javascript Events,我的问题是,我最近开始将我的HTML5 webapp更改为使用全屏+指针锁定,而不是在窗口中拖动鼠标。该应用程序除了使用鼠标外还使用键盘,以前一切正常。然而,现在我无法使用任何类型的按键。指针锁定鼠标工作正常 以前我听过这样的按键: document.onkeydown = handleKeyDown; document.onkeyup = handleKeyUp; 其中handleKeyDown和Up是功能,例如: function handleKeyUp(event) { doSt

我的问题是,我最近开始将我的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*与上面相同,但Dostuffith不做任何操作。它似乎得到了一些未定义的事件,而没有其他。这可能是一个相当基本的问题,但我很难解决它。我在Google上找到的大多数示例和教程都没有使用addEventListener,而是使用了我以前使用的旧样式

我非常感谢你的帮助


编辑//澄清:由于事件未定义,doStuffWith根本不会被调用,因为在尝试读取未定义的.keyCode时执行会停止。主要问题是,根据以下MDN页面,字母数字键在全屏模式下被禁用:

您的代码也有一些问题。排队

document.addEventListener('keyup', handleKeyUp(event), false);
。。。您有两个问题:第一,第二个参数必须是对函数的引用。它实际上是对未定义的
的引用,因为您正在立即调用函数并传入结果,而不是传入函数。其次,在支持
addEventListener
的浏览器中,
事件
对象自动传递到事件侦听器函数中。因此,您想要的是:

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

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

谢谢,我就知道有这样的事!不幸的是,这并不能解决问题。监听器在非全屏情况下似乎工作得很好,但在全屏情况下,根据日志发生的唯一关键事件是esc启动时,即在全屏退出后。@Asta:OK。我对使用全屏和指针锁几乎一无所知,所以我可能无法提供更多帮助,除了提供这个链接,其中提到字母数字键在全屏模式下被禁用:谢谢,这就是原因!我只尝试了字母数字(因为这是应用程序使用的)。箭头键工作正常。但我不能说我真的理解这个决定,因为大多数FPS的使用都是D和数字。你介意用这些信息来回答吗?这样我就可以接受了。@Asta:Done,我更新了我现有的答案。MDN(防范网络钓鱼攻击)中提到的理由对我来说有些道理,尽管我完全同意这对游戏来说完全是适得其反的。我在谷歌上搜索了一下,似乎计划/即将推出一种支持全键盘的全屏模式。目前,Mozilla似乎支持requestFullScreenWithKeys()方法和Webkit webkitRequestFullScreen(Element.ALLOW\u KEYBOARD\u INPUT)方法。不过,我也没有证实。