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 Ereignisse keydown
und keyup
liefern einen Code, der angibt, welche Taste gedrückt wurde, während keypress
angibt, welches Zeichen eingegeben wurde. Zum Beispiel wird ein kleines "a" durch keydown
und keyup
als 65 gemeldet, jedoch durch keypress
als 97. Ein Großbuchstabe "A" wird von allen Ereignissen als 65 gemeldet.
Das Zielelement eines Tastaturereignisses ist das derzeit fokussierte Element, das die Tastaturaktivität verarbeitet. Dies schließt ein: <input>
, <textarea>
, jede Entität, die contentEditable
ist, sowie alles andere, das durch die Tastatur interagiert werden kann, wie <a>
, <button>
und <summary>
. Wenn kein geeignetes Element im Fokus ist, ist das Zielelement das <body>
-Element oder die Root-Ebene. Das Ereignis blubbert nach oben. Es kann Document
und Window
erreichen.
Das Zielelement kann sich zwischen verschiedenen Tastaturereignissen ändern. Zum Beispiel wäre das keydown
-Zielelement für das Drücken der Taste Tab ein anderes als das keyup
-Zielelement, weil sich der Fokus geändert hat.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener()
oder setzen Sie eine Ereignis-Handler-Eigenschaft.
addEventListener("keydown", (event) => {});
onkeydown = (event) => {};
Ereignistyp
Ein KeyboardEvent
. Erbt von UIEvent
und Event
.
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 Taste Alt (Option oder ⌥ auf macOS) beim Generieren des Tastaturereignisses aktiv war. KeyboardEvent.code
Schreibgeschützt-
Gibt einen String mit dem Codewert 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 Zeile oberhalb der Grundlinie), dies immer "KeyY" zurückgibt, auch wenn der Benutzer eine QWERTZ-Tastatur verwendet (was bedeuten würde, dass der Benutzer ein "Z" erwartet und alle anderen Eigenschaften ein "Z" anzeigen würden) oder ein Dvorak-Tastaturlayout (bei dem der Benutzer ein "F" erwartet). Wenn Sie die korrekten Tastenanschläge für den 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 Taste Ctrl beim Generieren des Tastaturereignisses aktiv war. KeyboardEvent.isComposing
Schreibgeschützt-
Gibt einen booleschen Wert zurück, der
true
ist, wenn das Ereignis zwischencompositionstart
undcompositionend
ausgelöst wird. KeyboardEvent.key
Schreibgeschützt-
Gibt einen String zurück, der den Tastaturwert der durch das Ereignis repräsentierten Taste angibt.
KeyboardEvent.location
Schreibgeschützt-
Gibt eine Zahl zurück, die die Position der Taste auf der Tastatur oder einer anderen Eingabevorrichtung repräsentiert. Eine Liste der Konstanten, die die Positionen identifizieren, wird in Tastaturpositionen 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 (⊞)) beim Generieren des Tastaturereignisses aktiv war. KeyboardEvent.repeat
Schreibgeschützt-
Gibt einen booleschen Wert zurück, der
true
ist, wenn die Taste so lange gedrückt gehalten wird, dass sie automatisch wiederholt wird. KeyboardEvent.shiftKey
Schreibgeschützt-
Gibt einen booleschen Wert zurück, der
true
ist, wenn die Taste Shift beim Generieren des Tastaturereignisses aktiv war.
Beispiele
Beispiel mit addEventListener für keydown
Dieses Beispiel protokolliert den Wert von KeyboardEvent.code
, wann immer Sie eine Taste im Inneren eines <input>
-Elements drücken.
<input placeholder="Click here, then press down a key." size="40" />
<p id="log"></p>
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 mit Eingabemethode ausgelöst, um die Browser-Kompatibilität für CJKT-Benutzer zu verbessern (Firefox Bug 354358). Um alle keydown
-Ereignisse zu ignorieren, die Teil einer Komposition sind, können Sie etwa Folgendes tun (229 ist ein spezieller Wert, der für ein keyCode
gesetzt wird, das mit einem IME verarbeitet wurde):
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 eingetippt wird, das die IME öffnet, und compositionend
kann vor keydown
ausgelöst werden, wenn das letzte Zeichen eingetippt wird, das die IME schließt. In diesen Fällen ist isComposing
zwar falsch, obwohl das Ereignis Teil der Komposition ist. Dennoch bleibt KeyboardEvent.keyCode
in diesen Fällen auf 229
, daher ist es weiterhin ratsam, auch keyCode
zu überprüfen, obwohl es veraltet ist.
Spezifikationen
Specification |
---|
UI Events # event-type-keydown |
HTML # handler-onkeydown |
Browser-Kompatibilität
BCD tables only load in the browser