2012-04-01 11 views
0

Mein Problem ist, dass ich vor kurzem begonnen habe, meine HTML5-Webanwendung zu ändern, um Vollbild + Zeigersperre zu verwenden, anstatt die Maus im Fenster zu ziehen. Die App verwendet neben der Maus auch Tastatur, und alles hat früher gut funktioniert. Jetzt kann ich jedoch keine Tasten drücken, um zu arbeiten. Zeiger gesperrt Maus funktioniert perfekt.Keydown/keyup funktioniert nicht mit Zeigersperre/Vollbild

Früher hörte ich so an Tasten:

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

wo HandleKeyDown und Up sind Funktionen, zum Beispiel:

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

Jetzt habe ich direkt neben hinzugefügt Tastatur Hörer meiner mousemove- Zuhörer:

wo handleKey * sind die gleichen wie oben, aber doStuffWith d tu nichts. Es scheint einige undefinierte Ereignisse zu bekommen und sonst nichts. Das ist wahrscheinlich ein ziemlich elementares Problem, aber ich habe es schwer, es zu lösen. Die meisten Beispiele und Tutorials, die ich bei Google gefunden habe, verwenden nicht den addEventListener, sondern den alten Stil, den ich zuvor verwendet habe.

Ich bin sehr dankbar für jede Hilfe.

bearbeitet // Eine Klarstellung: Da Ereignisse nicht definiert sind, wird doStuffWith nicht aufgerufen werden, weil die Ausführung stoppt, wenn sie versuchen .keyCode undefinierten

Antwort

1

das Hauptproblem zu lesen ist, dass nach dem folgend MDN Seite, sind die alphanumerischen Tasten deaktiviert im Vollbildmodus:

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

Es gibt auch ein paar Probleme mit Ihrem Code. In der Zeile

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

... haben Sie zwei Probleme: erstens muss der zweite Parameter eine Referenz auf eine Funktion sein. Es ist eigentlich ein Verweis auf undefined, weil Sie die Funktion sofort aufrufen und das Ergebnis übergeben, anstatt eine Funktion zu übergeben. Zweitens wird das Objekt Event in Browsern, die addEventListener unterstützen, automatisch an die Ereignis-Listener-Funktion übergeben. Was Sie also wollen, ist:

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

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

Danke, ich wusste, dass es so etwas gab! Leider löst es das Problem nicht. Listener scheinen gut für Nicht-Vollbild zu funktionieren, aber im Vollbildmodus ist das einzige Schlüsselereignis, das gemäß den Protokollen auftritt, wenn esc hochgeht, dh unmittelbar nachdem der Vollbildmodus beendet ist. – Asta

+0

@Asta: OK. Ich weiß fast nichts über das Arbeiten mit Vollbild und Zeigersperre, daher kann ich wahrscheinlich nicht viel weiter helfen, außer diesen Link anzugeben, der besagt, dass alphanumerische Tasten im Vollbildmodus deaktiviert sind: https: //developer.mozilla. org/de/DOM/Using_full-screen_mode # Things_your_users_want_to_know –

+0

Danke, das war der Grund! Ich habe versucht nur alphanumerisch (da das ist, was die App verwendet). Pfeiltasten funktionieren gut. Ich kann jedoch nicht sagen, dass ich diese Entscheidung wirklich verstehe, weil die meisten FPS wdd und Zahlen verwenden. Macht es Ihnen etwas aus, mit dieser Information eine Antwort zu geben, damit ich sie akzeptieren kann? – Asta

Verwandte Themen