Bieten Sie eine immersive Vollbildoberfläche für eine Vielzahl von Anwendungsfällen, darunter interaktive Websites, Spiele und Remote-Desktop- oder Anwendungsstreaming.
Immer mehr Nutzer verbringen die meiste Zeit im Browser. Interaktive Websites, Spiele, Remote-Desktop-Streaming und Anwendungsstreaming bieten ein umfassendes Vollbild-Erlebnis. Dazu benötigen Websites Zugriff auf spezielle Tasten und Tastenkombinationen, während sie im Vollbildmodus sind, damit sie für die Navigation, Menüs oder Spiele verwendet werden können. Beispiele für die erforderlichen Tasten sind Esc, Alt + Tab, Cmd + ` und Strg + N.
Standardmäßig sind diese Tasten für die Webanwendung nicht verfügbar, da sie vom Browser oder dem zugrunde liegenden Betriebssystem erfasst werden. Mit der Keyboard Lock API können Websites alle verfügbaren Tasten verwenden, die vom Hostbetriebssystem zugelassen werden (siehe Browserkompatibilität).

Keyboard Lock API verwenden
Die Keyboard
-Schnittstelle der Keyboard API bietet Funktionen, mit denen die Erfassung von Tastendrücken über die physische Tastatur aktiviert oder deaktiviert werden kann. Außerdem können Informationen zum Tastaturlayout des Nutzers abgerufen werden.
Voraussetzungen
In modernen Browsern gibt es zwei Arten von Vollbildmodus: JavaScript-initiierte über die Fullscreen API und nutzerinitiierte über eine Tastenkombination. Die Keyboard Lock API ist nur verfügbar, wenn Vollbildmodus, der von JavaScript initiiert wird aktiv ist. Hier ein Beispiel für die Vollbilddarstellung, die durch JavaScript initiiert wird:
await document.documentElement.requestFullscreen();
Funktionserkennung
Mit dem folgenden Muster können Sie prüfen, ob die Keyboard Lock API unterstützt wird:
if ('keyboard' in navigator && 'lock' in navigator.keyboard) {
// Supported!
}
Tastatur sperren
Die Methode lock()
der Keyboard
-Schnittstelle gibt ein Promise zurück, nachdem die Erfassung von Tastendrücken für eine oder alle Tasten auf der physischen Tastatur aktiviert wurde. Mit dieser Methode können nur Schlüssel erfasst werden, für die das zugrunde liegende Betriebssystem Zugriff gewährt. Für die Methode lock()
ist ein Array mit einem oder mehreren zu sperrenden Tastencodes erforderlich. Wenn keine Tastencodes angegeben sind, werden alle Tasten gesperrt. Eine Liste der gültigen Tastencode-Werte finden Sie in der Spezifikation UI Events KeyboardEvent code Values.
Alle Tasten erfassen
Im folgenden Beispiel werden alle Tastendrücke erfasst.
navigator.keyboard.lock();
Bestimmte Tasten erfassen
Im folgenden Beispiel werden die Tasten W, A, S und D erfasst. Diese Tasten werden unabhängig davon erfasst, welche Modifizierer mit dem Tastendruck verwendet werden. Bei einem US-QWERTZ-Layout wird durch die Registrierung von "KeyW"
sichergestellt, dass W, Umschalttaste + W, Strg + W, Strg + Umschalttaste + W und alle anderen Tastenkombinationen mit W an die App gesendet werden. Das Gleiche gilt für "KeyA"
, "KeyS"
und "KeyD"
.
await navigator.keyboard.lock([
"KeyW",
"KeyA",
"KeyS",
"KeyD",
]);
Sie können mit Tastaturereignissen auf erfasste Tastendrücke reagieren.
Im folgenden Code wird beispielsweise das onkeydown
-Ereignis verwendet:
document.addEventListener('keydown', (event) => {
if ((event.code === 'KeyA') && !(event.ctrlKey || event.metaKey)) {
// Do something when the 'A' key was pressed, but only
// when not in combination with the command or control key.
}
});
Tastatur entsperren
Die Methode unlock()
entsperrt alle Schlüssel, die von der Methode lock()
erfasst wurden, und gibt synchron zurück.
navigator.keyboard.unlock();
Wenn ein Dokument geschlossen wird, ruft der Browser immer implizit unlock()
auf.
Demo
Sie können die Keyboard Lock API testen, indem Sie die Demo auf Glitch ausführen. Sehen Sie sich den Quellcode an. Wenn Sie unten auf die Schaltfläche „Vollbildmodus“ klicken, wird die Demo in einem neuen Fenster gestartet, sodass sie in den Vollbildmodus wechseln kann.
Sicherheitsaspekte
Ein Problem bei dieser API ist, dass sie verwendet werden könnte, um alle Schlüssel abzurufen und (in Verbindung mit der Fullscreen API und der PointerLock API) den Nutzer daran zu hindern, die Webseite zu verlassen. Um dies zu verhindern, muss der Browser gemäß der Spezifikation dem Nutzer eine Möglichkeit bieten, die Tastatursperre zu beenden, auch wenn alle Tasten von der API angefordert werden. In Chrome ist diese Notfalloption ein langes (zwei Sekunden langes) Drücken der Esc-Taste, um die Tastatursperre zu beenden.
Nützliche Links
- Spezifikationsentwurf
- GitHub-Repository
- ChromeStatus-Eintrag
- Chrome-Tracking-Fehler
- Tastencodes für Standardtastaturen
Danksagungen
Dieser Artikel wurde von Joe Medley und Kayce Basques geprüft. Die Spezifikation für die Tastatursperre wurde von Gary Kacmarcik und Jamie Walch erstellt. Hero-Image von Ken Suarez auf Unsplash.