KeyboardEvent: getModifierState() Methode
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.
Die KeyboardEvent.getModifierState()
Methode gibt den aktuellen Zustand der angegebenen Modifikatortaste zurück: true
, wenn der Modifikator aktiv ist (d.h. die Modifikatortaste gedrückt oder gesperrt ist), andernfalls false
.
Syntax
getModifierState(key)
Parameter
key
-
Ein Wert für eine Modifikatortaste. Der Wert muss einer der
KeyboardEvent.key
Werte sein, die Modifikatortasten darstellen, oder der String"Accel"
Veraltet . Dies ist case-sensitiv.
Rückgabewert
Ein boolescher Wert.
Modifikator-Tasten in Firefox
Wann gibt getModifierState()
in Firefox true zurück?
Windows | Linux (GTK) | Mac | Android 2.3 | Android 3.0 oder höher | |
---|---|---|---|---|---|
"Alt" |
Entweder Alt-Taste oder AltGr-Taste gedrückt | Alt-Taste gedrückt | ⌥ Option-Taste gedrückt | Alt-Taste oder Option-Taste gedrückt | |
"AltGraph" |
Beide Alt- und Ctrl-Tasten sind gedrückt oder AltGr-Taste ist gedrückt |
Level 3 Shift-Taste (oder Level 5 Shift-Taste) gedrückt | ⌥ Option-Taste gedrückt | ❌ Nicht unterstützt | ❌ Nicht unterstützt |
"CapsLock" |
Während LED für ⇪ Caps Lock eingeschaltet | ❌ Nicht unterstützt | Während CapsLock gesperrt ist | ||
"Control" |
Entweder Ctrl-Taste oder AltGr-Taste gedrückt | Ctrl-Taste gedrückt | control-Taste gedrückt | menu-Taste gedrückt | Ctrl-Taste, control-Taste oder menu-Taste gedrückt. |
"Fn" |
❌ Nicht unterstützt | ❌ Nicht unterstützt | ❌ Nicht unterstützt | ❌ Nicht unterstützt | Function-Taste ist gedrückt, aber es ist nicht sicher, welche Taste den Modifikatorstatus aktiviert. Fn-Taste auf Mac-Tastatur verursacht dies nicht. |
"FnLock" |
❌ Nicht unterstützt | ❌ Nicht unterstützt | ❌ Nicht unterstützt | ❌ Nicht unterstützt | ❌ Nicht unterstützt |
"Hyper" |
❌ Nicht unterstützt | ❌ Nicht unterstützt | ❌ Nicht unterstützt | ❌ Nicht unterstützt | ❌ Nicht unterstützt |
"Meta" |
⊞ Windows Logo-Taste gedrückt (ab Firefox 118) | Meta-Taste gedrückt | ⌘ Command-Taste gedrückt | ❌ Nicht unterstützt | ⊞ Windows Logo-Taste oder command-Taste gedrückt |
"NumLock" |
Während LED für Num Lock eingeschaltet | Eine Taste auf dem Numpad gedrückt | ❌ Nicht unterstützt | Während NumLock gesperrt ist | |
"OS" |
⊞ Windows Logo-Taste gedrückt (vor Firefox 118) | Super-Taste oder Hyper-Taste gedrückt (normalerweise der ⊞ Windows Logo-Taste zugeordnet) | ❌ Nicht unterstützt | ❌ Nicht unterstützt | ❌ Nicht unterstützt |
"ScrollLock" |
Während LED für Scroll Lock eingeschaltet | Während LED für Scroll Lock eingeschaltet, aber normalerweise wird dies nicht von der Plattform unterstützt | ❌ Nicht unterstützt | ❌ Nicht unterstützt | Während ScrollLock gesperrt ist |
"Shift" |
⇧ Shift-Taste gedrückt | ||||
"Super" |
❌ Nicht unterstützt | ❌ Nicht unterstützt | ❌ Nicht unterstützt | ❌ Nicht unterstützt | ❌ Nicht unterstützt |
"Symbol" |
❌ Nicht unterstützt | ❌ Nicht unterstützt | ❌ Nicht unterstützt | ❌ Nicht unterstützt | ❌ Nicht unterstützt |
"SymbolLock" |
❌ Nicht unterstützt | ❌ Nicht unterstützt | ❌ Nicht unterstützt | ❌ Nicht unterstützt | ❌ Nicht unterstützt |
- Auf den anderen Plattformen könnten "Alt", "Control" und "Shift" unterstützt werden.
- Alle Modifikatoren (außer
"FnLock"
,"Hyper"
,"Super"
und"Symbol"
, die nach der Implementierung von Firefox definiert werden) werden immer für nicht vertrauenswürdige Ereignisse in Firefox unterstützt. Dies hängt nicht von der Plattform ab.
"Accel"
virtueller Modifikator
Hinweis:
Der "Accel"
virtuelle Modifikator wurde in aktuellen Entwürfen der DOM3 Events-Spezifikation effektiv veraltet.
getModifierState()
akzeptiert auch einen veralteten virtuellen Modifikator namens "Accel"
. event.getModifierState("Accel")
gibt true
zurück, wenn mindestens einer der KeyboardEvent.ctrlKey
oder KeyboardEvent.metaKey
true
ist.
In alten Implementierungen und veralteten Spezifikationen gab es true
zurück, wenn ein Modifikator, der die typische Modifikatortaste für die Shortcut-Taste ist, gedrückt wurde. Zum Beispiel kann es auf Windows true
zurückgeben, wenn die Ctrl-Taste gedrückt wird. Auf dem Mac kann das Drücken der ⌘ Command-Taste dazu führen, dass es true
zurückgibt. Beachten Sie, dass welche Modifikatortaste es wahr zurückgibt, von Plattformen, Browsern und Benutzereinstellungen abhängt. Beispielsweise können Firefox-Benutzer dies mit einer Präferenz "ui.key.accelKey"
anpassen.
Beispiele
function handleKeyboardEvent(event) {
// Ignore if following modifier is active.
if (
event.getModifierState("Fn") ||
event.getModifierState("Hyper") ||
event.getModifierState("OS") ||
event.getModifierState("Super") ||
event.getModifierState("Win") /* hack for IE */
) {
return;
}
// Also ignore if two or more modifiers except Shift are active.
if (
event.getModifierState("Control") +
event.getModifierState("Alt") +
event.getModifierState("Meta") >
1
) {
return;
}
// Handle shortcut key with standard modifier
if (event.getModifierState("Accel")) {
switch (event.key.toLowerCase()) {
case "c":
if (event.getModifierState("Shift")) {
// Handle Accel + Shift + C
event.preventDefault(); // consume the key event
}
break;
case "k":
if (!event.getModifierState("Shift")) {
// Handle Accel + K
event.preventDefault(); // consume the key event
}
break;
}
return;
}
// Do something different for arrow keys if ScrollLock is locked.
if (
(event.getModifierState("ScrollLock") ||
event.getModifierState("Scroll")) /* hack for IE */ &&
!event.getModifierState("Control") &&
!event.getModifierState("Alt") &&
!event.getModifierState("Meta")
) {
switch (event.key) {
case "ArrowDown":
case "Down": // hack for IE and old Firefox
event.preventDefault(); // consume the key event
break;
case "ArrowLeft":
case "Left": // hack for IE and old Firefox
// Do something different if ScrollLock is locked.
event.preventDefault(); // consume the key event
break;
case "ArrowRight":
case "Right": // hack for IE and old Firefox
// Do something different if ScrollLock is locked.
event.preventDefault(); // consume the key event
break;
case "ArrowUp":
case "Up": // hack for IE and old Firefox
// Do something different if ScrollLock is locked.
event.preventDefault(); // consume the key event
break;
}
}
}
Hinweis:
Obwohl dieses Beispiel .getModifierState()
mit "Alt"
,
"Control"
, "Meta"
und "Shift"
verwendet, könnte es bevorzugter sein, event.altKey
, event.ctrlKey
, event.metaKey
und event.shiftKey
zu verwenden.
Spezifikationen
Specification |
---|
UI Events # dom-keyboardevent-getmodifierstate |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Das
KeyboardEvent
, dem diese Methode gehört. MouseEvent.getModifierState