Die Methode KeyboardEvent.getModifierState()
gibt den aktuellen Zustand des angegebenen Modifikators zurück: true
, wenn der Modifikator aktiv ist (d.h. die Modifikationstasten gedrückt oder gesperrt ist), ansonsten false
.
Syntax
var active = event.getModifierState(keyArg);
Rückgabe
Einen Boolean
Parameter
keyArg
- Ein Modifikatorschlüsselwert. Der Wert muss einer der
KeyboardEvent.key
Werte sein, die Modifikatorschlüssel darstellen, oder die Zeichenkette "Accel" . Dabei wird zwischen Groß- und Kleinschreibung unterschieden.
Modifikationstasten im Internet Explorer
IE9 verwendet "Scroll"
für "ScrollLock"
und "Win"
für "OS"
.
Modifikationstasten in Gecko
Windows | Linux (GTK) | Mac | Android 2.3 | Android 3.0 und später | |
---|---|---|---|---|---|
"Alt" |
Entweder die Alt oder AltGr -Taste gedrückt wird | Alt -Taste gedrückt wird | ⌥ Option -Taste gedrückt wird | Alt oder option -Taste gedrückt wird | |
"AltGraph" |
Sowohl die Alt als auch die Strg werden gedrückt, oder die AltGr Taste wird gedrückt |
Level 3 Shift Taste (or Level 5 Shift Taste ) wird gedrückt | ⌥ Option Taste wird gedrückt | Nicht unterstützt | |
"CapsLock" |
Während die LED für ⇪ Caps Lock leuchtet | Nicht unterstützt | Solange ⇪ Caps Lock gesperrt ist | ||
"Control" |
Entweder die Strg oder AltGr -Taste wird gedrückt | Strg Taste wird gedrückt | control Taste wird gedrückt | menu Taste wird gedrückt. | Strg, control oder menu Taste wird gedrückt. |
"Fn" |
Nicht unterstützt | Die Function wird gedrückt, aber wir sind nicht sicher, welche Taste den Modifikatorstatus aktiv setzt. Die Fn-Taste auf der Mac-Tastatur bewirkt dies nicht. |
|||
"FnLock" |
Nicht unterstützt | ||||
"Hyper" |
Nicht unterstützt | ||||
"Meta" |
Nicht unterstützt | Meta Taste wird gedrückt | ⌘ Command Taste wird gedrückt | Nicht unterstützt | ⊞ Windows Logo or command Taste gedrückt wird |
"NumLock" |
Während die LED für Num Lock leuchtet | Eine Taste auf dem Nummerblock gedrückt wird | Nicht unterstützt | Solange NumLock gesperrt ist | |
"OS" |
⊞ Windows Logo Taste wird gedrückt | Super or Hyper Taste wird gedrückt (normalerweise auf der ⊞ Windows Logo Taste zugeordnet) | Nicht unterstützt | ||
"ScrollLock" |
Während die LED für ScrollLock leuchtet | Während die LED für ScrollLock leuchtet, aber normalerweise wird dies von der Plattform nicht unterstützt | Nicht unterstützt | Solange ScrollLock gesperrt | |
"Shift" |
⇧ Shift Taste wird gedrückt | ||||
"Super" |
Nicht unterstützt | ||||
"Symbol" |
Nicht unterstützt | ||||
"SymbolLock" |
Nicht unterstützt |
- Auf den anderen Plattformen werden Alt, Control und Shift unterstützt werden.
- Alle Modifikatoren (außer "FnLock", "Hyper", "Super" und "Symbol", die nach der Implementierung von Gecko definiert werden) stehen immer für nicht vertrauenswürdige Ereignisse auf Gecko zur Verfügung. Das hängt nicht von der Plattform ab.
"Accel" virtueller Modifikator
"Accel"
ist in den aktuellen Entwürfen der DOM3 Events-Spezifikation praktisch veraltet.getModifierState()
also accepts a deprecated virtual modifier named "Accel"
. event.getModifierState("Accel")
returns true
when at least one of KeyboardEvent.ctrlKey
or KeyboardEvent.metaKey
is true
.
In old implementations and outdated specifications, it returned true
when a modifier which is the typical modifier key for the shortcut key is pressed. For example, on Windows, pressing Ctrl key may make it return true
. However, on Mac, pressing ⌘ Command key may make it return true
. Note that which modifier key makes it return true depends on platforms, browsers, and user settings. For example, Firefox users can customize this with a pref, "ui.key.accelKey"
.
Beispiel
// Ignorieren, wenn folgender Modifikator aktiv ist.
if (event.getModifierState("Fn") ||
event.getModifierState("Hyper") ||
event.getModifierState("OS") ||
event.getModifierState("Super") ||
event.getModifierState("Win") /* hack for IE */) {
return;
}
// auch ignorieren, wenn zwei oder mehr Modifikatoren außer Shift aktiv sind.
if (event.getModifierState("Control") +
event.getModifierState("Alt") +
event.getModifierState("Meta") > 1) {
return;
}
// Tastaturkürzel mit Standardmodifikator
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;
}
// Mach etwas anderes für die Pfeiltasten, wenn ScrollLock gesperrt ist.
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 für IE und älteren Gecko
event.preventDefault(); // Schlüsselereignis verwenden
break;
case "ArrowLeft":
case "Left": // Hack für IE und älteren Gecko
// Mach etwas anderes für die Pfeiltasten, wenn ScrollLock gesperrt ist.
event.preventDefault(); // Schlüsselereignis verwenden
break;
case "ArrowRight":
case "Right": // Hack für IE und älteren Gecko
// Mach etwas anderes für die Pfeiltasten, wenn ScrollLock gesperrt ist.
event.preventDefault(); // Schlüsselereignis verwenden
break;
case "ArrowUp":
case "Up": // Hack für IE und älteren Gecko
// Mach etwas anderes für die Pfeiltasten, wenn ScrollLock gesperrt ist.
event.preventDefault(); // Schlüsselereignis verwenden
break;
}
}
Obwohl dieses Beispiel .getModifierState()
mit "Alt"
, "Control"
, "Meta"
und "Shift"
verwendet, ist es vielleicht besser, altKey
, ctrlKey
, metaKey
und shiftKey
zu verwenden, da sie kürzer und vielleicht schneller sind.
Spezifikationen
Spezifikation | Status | Kommentar |
---|---|---|
Document Object Model (DOM) Level 3 Events Specification Die Definition von 'getModifierState()' in dieser Spezifikation. |
Veraltet | Initiale Definition (Modifier Keys spec) |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Das
KeyboardEvent
, zu dem die Methode gehört. MouseEvent.getModifierState