Element: keydown-Event
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
-Event wird ausgelöst, wenn eine Taste gedrückt wird.
Im Gegensatz zum veralteten keypress
-Event wird das keydown
-Event für alle Tasten ausgelöst, unabhängig davon, ob sie einen Zeichenwert erzeugen.
Die keydown
- und keyup
-Events 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 als 97 von keypress
. Ein großes "A" wird von allen Events als 65 gemeldet.
Das Event-Ziel eines Tasten-Events ist das aktuell fokussierte Element, das die Tastaturaktivität verarbeitet. Dies schließt ein: <input>
, <textarea>
, alles, was contentEditable
ist, und alles, was mit der Tastatur interagiert werden kann, wie <a>
, <button>
und <summary>
. Falls kein geeignetes Element im Fokus steht, wird das Event-Ziel der <body>
oder das Root-Element sein. Wird das Event nicht abgefangen, wird es gebubbelt den DOM-Baum hinauf bis es Document
erreicht.
Das Event-Ziel kann sich zwischen verschiedenen Tasten-Events ändern. Zum Beispiel wäre das keydown
-Ziel beim Drücken der Tab-Taste anders als das keyup
-Ziel, da der Fokus sich geändert hat.
Syntax
Verwenden Sie den Event-Namen in Methoden wie addEventListener()
oder setzen Sie eine Event-Handler-Eigenschaft.
addEventListener("keydown", (event) => {});
onkeydown = (event) => {};
Event-Typ
Ein KeyboardEvent
. Erbt von UIEvent
und Event
.
Event-Eigenschaften
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-Taste (Option oder ⌥ auf macOS) aktiv war, als das Tasten-Event ausgelöst wurde. KeyboardEvent.code
Schreibgeschützt-
Gibt einen String mit dem Code-Wert der physikalischen Taste zurück, die durch das Event 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 Home-Reihe), dies immer "KeyY" zurückgeben wird, selbst wenn der Benutzer eine QWERTZ-Tastatur hat (was bedeuten würde, der Benutzer erwartet ein "Z" und alle anderen Eigenschaften würden ein "Z" anzeigen) oder ein Dvorak-Tastaturlayout (wo der Benutzer ein "F" erwarten würde). Wenn Sie die korrekten 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 Tasten-Event ausgelöst wurde. KeyboardEvent.isComposing
Schreibgeschützt-
Gibt einen booleschen Wert zurück, der
true
ist, wenn das Event zwischencompositionstart
undcompositionend
ausgelöst wird. KeyboardEvent.key
Schreibgeschützt-
Gibt einen String zurück, der den Tastenwert der Taste repräsentiert, die durch das Event repräsentiert wird.
KeyboardEvent.location
Schreibgeschützt-
Gibt eine Zahl zurück, die den Ort der Taste auf der Tastatur oder einem anderen Eingabegerät darstellt. Eine Liste der Konstanten, die die Orte identifizieren, ist in Tastaturorte gezeigt.
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 Tasten-Event ausgelöst 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 Tasten-Event ausgelöst wurde.
Beispiele
addEventListener keydown Beispiel
Dieses Beispiel protokolliert den KeyboardEvent.code
-Wert, wann immer Sie eine Taste innerhalb des <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-Events mit IME
Seit Firefox 65 werden die keydown
- und keyup
-Events während der Komposition mit dem Eingabemethoden-Editor ausgelöst, um die Kompatibilität zwischen Browsern für CJKT-Benutzer zu verbessern (Firefox bug 354358). Um alle keydown
-Events zu ignorieren, die Teil der Komposition sind, machen Sie etwas wie dies (229 ist ein spezieller Wert, der für einen keyCode
gesetzt wird, der sich auf ein Event bezieht, das von einem IME verarbeitet wurde):
eventTarget.addEventListener("keydown", (event) => {
if (event.isComposing || event.keyCode === 229) {
return;
}
// do something
});
Nota:
compositionstart
kann nachkeydown
ausgelöst werden, wenn Sie das erste Zeichen tippen, das das IME öffnet, undcompositionend
kann vorkeydown
ausgelöst werden, wenn Sie das letzte Zeichen tippen, das das IME schließt. In diesen Fällen istisComposing
falsch, auch wenn das Event Teil der Komposition ist. Allerdings istKeyboardEvent.keyCode
in diesen Fällen immer noch229
, daher ist es weiterhin ratsam, auchkeyCode
zu überprüfen, obwohl es veraltet ist.
Spezifikationen
Specification |
---|
UI Events # event-type-keydown |
HTML Standard # handler-onkeydown |
Browser-Kompatibilität
BCD tables only load in the browser