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 oder nicht.
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" mit 65 durch keydown
und keyup
berichtet, aber mit 97 durch keypress
. Ein großes "A" wird durch alle Ereignisse mit 65 gemeldet.
Das Ziel 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 mit der Tastatur angesprochen werden kann, wie <a>
, <button>
, und <summary>
. Wenn kein geeignetes Element fokussiert ist, ist das Ereignisziel das <body>
oder die Wurzel. Das Ereignis blubbert nach oben. Es kann Document
und Window
erreichen.
Das Ereignisziel kann sich zwischen verschiedenen Tastaturereignissen ändern. Beispielsweise wäre das keydown
-Ziel beim Drücken der Tab-Taste ein anderes als das keyup
-Ziel, weil der Fokus sich 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 Alt (Option oder ⌥ auf macOS) Taste aktiv war, als das Tastaturereignis generiert wurde. KeyboardEvent.code
Schreibgeschützt-
Gibt einen String mit dem Codewert der physischen Taste zurück, die durch das Ereignis dargestellt wird.
Warnung: Dies ignoriert das Tastaturlayout des Benutzers, weshalb, wenn der Benutzer die Taste an der "Y"-Position eines QWERTY-Tastaturlayouts drückt (nahe der Mitte der Reihe über der Grundreihe), dies immer "KeyY" zurückgibt, selbst 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 dem Benutzer die richtigen Tastenanschläge 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 zwischencompositionstart
undcompositionend
ausgelöst wird. KeyboardEvent.key
Schreibgeschützt-
Gibt einen String zurück, der den Tastenwert der Taste darstellt, die durch das Ereignis repräsentiert wird.
KeyboardEvent.location
Schreibgeschützt-
Gibt eine Zahl zurück, die die Position der Taste auf der Tastatur oder einem anderen Eingabegerät darstellt. Eine Liste der Konstanten, die die Positionen identifizieren, wird in Tastaturpositionen 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 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
addEventListener keydown Beispiel
Dieses Beispiel protokolliert den Wert von KeyboardEvent.code
, 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 Ereignisse mit IME
Seit Firefox 65 werden die keydown
- und keyup
Ereignisse während der Eingabemethoden-Editor Komposition 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 Komposition sind, tun Sie etwas wie dies (229 ist ein spezieller Wert, der für einen keyCode
festgelegt 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 das erste Zeichen eingegeben wird, das den IME öffnet, und compositionend
kann vor keydown
ausgelöst werden, wenn das letzte Zeichen eingegeben wird, das den IME schließt. In diesen Fällen ist isComposing
zwar false, auch wenn das Ereignis Teil der Komposition ist. Allerdings ist KeyboardEvent.keyCode
in diesen Fällen immer noch 229
, daher ist es dennoch ratsam, auch keyCode
zu prüfen, obwohl es veraltet ist.
Spezifikationen
Specification |
---|
UI Events # event-type-keydown |
HTML # handler-onkeydown |