簡體   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