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 geben einen Code an, der angibt, welche Taste gedrückt wurde, während keypress
angibt, welches Zeichen eingegeben wurde. Zum Beispiel wird ein kleines "a" als 65 von keydown
und keyup
gemeldet, aber als 97 von keypress
. Ein großes "A" wird von allen Ereignissen als 65 gemeldet.
Das Ereignisziel eines Tastaturereignisses ist das derzeit fokussierte Element, das die Tastaturaktivität verarbeitet. Dazu gehören: <input>
, <textarea>
, alles, was contentEditable
ist, und alles andere, das über die Tastatur aktiviert werden kann, wie z.B. <a>
, <button>
und <summary>
. Wenn kein geeignetes Element fokussiert ist, wird das Ereignisziel der <body>
oder das Root-Element sein. Wird das Ereignis nicht abgefangen, blubbert es den DOM-Baum hinauf bis zum Document
.
Das Ereignisziel kann sich zwischen verschiedenen Tastenereignissen ändern. Beispielsweise wäre das Ziel von keydown
beim Drücken der Tab-Taste unterschiedlich zu dem von keyup
, da sich der Fokus geändert hat.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener()
oder setzen Sie eine Ereignishandler-Eigenschaft.
addEventListener("keydown", (event) => {});
onkeydown = (event) => {};
Ereignistyp
Ein KeyboardEvent
. Erbt von UIEvent
und Event
.
Ereigniseigenschaften
Diese Schnittstelle erbt auch Eigenschaften ihrer übergeordneten Schnittstellen, UIEvent
und Event
.
KeyboardEvent.altKey
Nur lesbar-
Gibt einen booleschen Wert zurück, der
true
ist, wenn die Alt-Taste (Option oder ⌥ auf macOS) aktiv war, als das Tastenereignis generiert wurde. KeyboardEvent.code
Nur lesbar-
Gibt einen String mit dem Codewert der physischen Taste zurück, die durch das Ereignis dargestellt 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 Heimatreihe), dies immer "KeyY" zurückgeben wird, auch wenn der Benutzer eine QWERTZ-Tastatur hat (was bedeuten würde, dass der Benutzer ein "Z" erwartet und alle anderen Eigenschaften ein "Z" anzeigen würden) 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
Nur lesbar-
Gibt einen booleschen Wert zurück, der
true
ist, wenn die Ctrl-Taste aktiv war, als das Tastenereignis generiert wurde. KeyboardEvent.isComposing
Nur lesbar-
Gibt einen booleschen Wert zurück, der
true
ist, wenn das Ereignis zwischencompositionstart
undcompositionend
ausgelöst wird. KeyboardEvent.key
Nur lesbar-
Gibt einen String zurück, der den Tastenwert der durch das Ereignis dargestellten Taste repräsentiert.
KeyboardEvent.location
Nur lesbar-
Gibt eine Zahl zurück, die die Position der Taste auf der Tastatur oder einem anderen Eingabegerät repräsentiert. Eine Liste der Konstanten, die die Positionen identifizieren, wird in Keyboard locations gezeigt.
KeyboardEvent.metaKey
Nur lesbar-
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 Tastenereignis generiert wurde. KeyboardEvent.repeat
Nur lesbar-
Gibt einen booleschen Wert zurück, der
true
ist, wenn die Taste gehalten wird, so dass sie automatisch wiederholt wird. KeyboardEvent.shiftKey
Nur lesbar-
Gibt einen booleschen Wert zurück, der
true
ist, wenn die Shift-Taste aktiv war, als das Tastenereignis generiert wurde.
Beispiele
addEventListener-keydown-Beispiel
Dieses Beispiel protokolliert den KeyboardEvent.code
-Wert, wenn Sie eine Taste im <input>
-Element 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 während der Input Method Editor-Zusammensetzung ausgelöst, um die Browser-Kompatibilität für CJKT-Benutzer zu verbessern (Firefox-Bug 354358). Um alle keydown
-Ereignisse zu ignorieren, die Teil der Zusammensetzung sind, machen Sie etwas Ähnliches wie dies (229 ist ein spezieller Wert, der für einen keyCode
gesetzt ist, der sich auf ein Ereignis bezieht, das von 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 der erste Buchstabe eingegeben wird, der das IME öffnet, und compositionend
kann vor keydown
ausgelöst werden, wenn der letzte Buchstabe eingegeben wird, der das IME schließt. In diesen Fällen ist isComposing
false, auch wenn das Ereignis Teil der Zusammensetzung ist. Trotzdem ist KeyboardEvent.keyCode
in diesen Fällen immer noch 229
, daher ist es dennoch ratsam, keyCode
ebenfalls zu überprüfen, obwohl es als veraltet gilt.
Spezifikationen
Specification |
---|
UI Events # event-type-keydown |
HTML Standard # handler-onkeydown |
Browser-Kompatibilität
BCD tables only load in the browser