Element: keydown-Ereignis

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Das keydown-Ereignis wird ausgelöst, wenn eine Taste gedrückt wird.

Im Gegensatz zum veralteten keypress-Ereignis wird das keydown-Ereignis für alle Tasten ausgelöst, unabhängig davon, ob sie einen Zeichenwert erzeugen.

Die keydown- und keyup-Ereignisse liefern einen Code, der angibt, welche Taste gedrückt wurde, während keypress angibt, welches Zeichen eingegeben wurde. Zum Beispiel wird ein kleines "a" von keydown und keyup als 65 gemeldet, aber von keypress als 97. Ein Großbuchstabe "A" wird von allen Ereignissen als 65 gemeldet.

Das Ereignisziel eines Tastaturereignisses ist das aktuell fokussierte Element, das die Tastaturaktivität verarbeitet. Dazu gehören: <input>, <textarea>, alles, was contentEditable ist, und alles andere, mit dem über die Tastatur interagiert werden kann, wie z.B. <a>, <button> und <summary>. Wenn kein geeignetes Element fokussiert ist, ist das Ereignisziel das <body> oder die Wurzel. Das Ereignis blubbert. Es kann Document und Window erreichen.

Das Ereignisziel kann sich zwischen verschiedenen Tastaturereignissen ändern. Zum Beispiel wäre das keydown-Ziel für das Drücken der Tab-Taste ein anderes als das keyup-Ziel, da sich der Fokus geändert hat.

Syntax

Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder legen Sie eine Ereignis-Handler-Eigenschaft fest.

js
addEventListener("keydown", (event) => { })

onkeydown = (event) => { }

Ereignistyp

Ereigniseigenschaften

Diese Schnittstelle erbt auch Eigenschaften ihrer Eltern UIEvent und Event.

KeyboardEvent.altKey Schreibgeschützt

Gibt einen booleschen Wert zurück, der true ist, wenn die Alt (Option oder auf macOS) Taste aktiv war, als das Tastaturereignis generiert wurde.

KeyboardEvent.code Schreibgeschützt

Gibt einen String mit dem Code-Wert der physischen Taste zurück, die durch das Ereignis repräsentiert wird.

Warnung: Dies ignoriert das Tastaturlayout des Benutzers, sodass, wenn der Benutzer die Taste an der "Y"-Position in einem QWERTY-Tastaturlayout drückt (nahe der Mitte der Reihe über der Heimreihe), immer "KeyY" zurückgegeben wird, selbst wenn der Benutzer eine QWERTZ-Tastatur (die Benutzer erwartet ein "Z" und alle anderen Eigenschaften würden ein "Z" anzeigen) oder ein Dvorak-Tastaturlayout verwendet (wo der Benutzer ein "F" erwarten würde). Wenn Sie die richtigen Tastenanschläge dem Benutzer anzeigen möchten, können Sie Keyboard.getLayoutMap() verwenden.

KeyboardEvent.ctrlKey Schreibgeschützt

Gibt einen booleschen Wert zurück, der true ist, wenn die Ctrl-Taste aktiv war, als das Tastaturereignis generiert wurde.

KeyboardEvent.isComposing Schreibgeschützt

Gibt einen booleschen Wert zurück, der true ist, wenn das Ereignis zwischen compositionstart und compositionend ausgelöst wird.

KeyboardEvent.key Schreibgeschützt

Gibt einen String zurück, der den Tastenwert der durch das Ereignis repräsentierten Taste darstellt.

KeyboardEvent.location Schreibgeschützt

Gibt eine Zahl zurück, die den Standort der Taste auf der Tastatur oder einem anderen Eingabegerät darstellt. Eine Liste der Konstanten, die die Standorte identifizieren, wird in Tastaturstandorte angezeigt.

KeyboardEvent.metaKey Schreibgeschützt

Gibt einen booleschen Wert zurück, der true ist, wenn die Meta-Taste (auf Mac-Tastaturen die ⌘ Command-Taste; auf Windows-Tastaturen die Windows-Taste ()) aktiv war, als das Tastaturereignis generiert wurde.

KeyboardEvent.repeat Schreibgeschützt

Gibt einen booleschen Wert zurück, der true ist, wenn die Taste so gehalten wird, dass sie automatisch wiederholt wird.

KeyboardEvent.shiftKey Schreibgeschützt

Gibt einen booleschen Wert zurück, der true ist, wenn die Shift-Taste aktiv war, als das Tastaturereignis generiert wurde.

Beispiele

Beispiel addEventListener keydown

Dieses Beispiel protokolliert den KeyboardEvent.code-Wert, wann immer Sie eine Taste innerhalb des <input>-Elements drücken.

html
<input placeholder="Click here, then press down a key." size="40" />
<p id="log"></p>
js
const input = document.querySelector("input");
const log = document.getElementById("log");

input.addEventListener("keydown", logKey);

function logKey(e) {
  log.textContent += ` ${e.code}`;
}

Keydown-Ereignisse mit IME

Seit Firefox 65 werden die keydown- und keyup-Ereignisse nun während der Eingabe-Methode-Editor-Komposition ausgelöst, um die Browser-Kompatibilität für CJKT-Benutzer zu verbessern (Firefox-Fehler 354358). Um alle keydown-Ereignisse zu ignorieren, die Teil der Komposition sind, machen Sie etwas wie dieses (229 ist ein spezieller Wert, der für einen keyCode gesetzt wird, der sich auf ein Ereignis bezieht, das von einer IME verarbeitet wurde):

js
eventTarget.addEventListener("keydown", (event) => {
  if (event.isComposing || event.keyCode === 229) {
    return;
  }
  // do something
});

Hinweis:>compositionstart kann nach keydown ausgelöst werden, wenn das erste Zeichen eingegeben wird, das die IME öffnet, und compositionend kann vor keydown ausgelöst werden, wenn das letzte Zeichen eingegeben wird, das die IME schließt. In diesen Fällen ist isComposing false, selbst wenn das Ereignis Teil der Komposition ist. Allerdings ist KeyboardEvent.keyCode in diesen Fällen immer noch 229, sodass es ratsam ist, keyCode ebenfalls zu überprüfen, obwohl es veraltet ist.

Spezifikationen

Specification
UI Events
# event-type-keydown
HTML
# handler-onkeydown

Browser-Kompatibilität

Siehe auch