Start · Sprachen · JavaScript · Referenz · KeyboardEvent.metaKey

KeyboardEvent.metaKey

Eigenschaft

Schreibgeschützter boolescher Wert, der angibt, ob beim Auslösen des Tastaturereignisses die Meta-Taste (⌘ auf macOS, ⊞ Windows-Taste unter Windows) gedrückt war.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

KeyboardEvent.metaKey

Beschreibung

Die Eigenschaft metaKey eines KeyboardEvent ist true, wenn beim Auslösen des Ereignisses die Meta-Taste gedrückt war, sonst false. Auf macOS ist das die Command-Taste (⌘), unter Windows die Windows-Taste (⊞). Auf Linux-Systemen hängt die Belegung vom Desktop ab (oft die „Super“-Taste).

Gebraucht wird die Eigenschaft vor allem für Tastenkürzel. Auf dem Mac entspricht ⌘ dem, was unter Windows und Linux Strg ist (z. B. ⌘+S bzw. Strg+S zum Speichern). Plattformübergreifende Anwendungen prüfen deshalb meist event.metaKey || event.ctrlKey oder wählen die Taste je nach Betriebssystem.

Die Eigenschaft gibt es genauso bei MouseEvent (und damit auch bei PointerEvent und WheelEvent), sodass man damit z. B. ⌘+Klick erkennen kann. Wer den Zustand beliebiger Modifier-Tasten abfragen will (auch CapsLock oder AltGraph), nimmt event.getModifierState("Meta").

Rückgabewert

Typ
boolean
Beschreibung
true, wenn die Meta-Taste beim Auslösen des Ereignisses gedrückt war, sonst false.

Beispiele

Plattformübergreifendes Speichern-Kürzel (⌘+S / Strg+S)

const isMac = /Mac|iPhone|iPad/.test(navigator.platform);

document.addEventListener('keydown', (event) => {
  const primaryModifier = isMac ? event.metaKey : event.ctrlKey;
  if (primaryModifier && event.key.toLowerCase() === 's') {
    event.preventDefault(); // Speichern-Dialog des Browsers unterdrücken
    console.log('Dokument wird gespeichert …');
  }
});
Dokument wird gespeichert …

Alle Modifier-Tasten protokollieren

const input = document.querySelector('#editor');

input.addEventListener('keydown', (event) => {
  const mods = [
    event.metaKey && 'Meta',
    event.ctrlKey && 'Ctrl',
    event.altKey && 'Alt',
    event.shiftKey && 'Shift'
  ].filter(Boolean);
  console.log(`${mods.join('+') || 'keine Modifier'} + ${event.key}`);
});
Meta+Shift + Z

Befehlspalette mit ⌘+K bzw. Strg+K öffnen

const openCommandPalette = () => console.log('Befehlspalette geöffnet');

window.addEventListener('keydown', (event) => {
  if ((event.metaKey || event.ctrlKey) && event.key === 'k' && !event.repeat) {
    event.preventDefault();
    openCommandPalette();
  }
});
Befehlspalette geöffnet

Synthetisches Ereignis mit metaKey erzeugen

const evt = new KeyboardEvent('keydown', { key: 'c', metaKey: true });
console.log(evt.metaKey);
console.log(evt.getModifierState('Meta'));
true true

// Wichtig · Fallstricke

  • Die Windows-Taste wird oft vom Betriebssystem abgefangen: Unter Windows landen viele Kombinationen mit ⊞ (z. B. ⊞+D oder ⊞+L) gar nicht erst im Browser. Kürzel mit metaKey sollten deshalb vor allem für macOS gedacht sein.
  • macOS schluckt keyup: Solange ⌘ gedrückt ist, lösen andere Tasten in vielen Browsern kein keyup aus. Logik, die sich auf keyup verlässt, kann dadurch hängen bleiben. Kürzel besser in keydown auswerten.
  • Die Meta-Taste selbst: Beim keydown der Meta-Taste ist metaKey bereits true und event.key ist "Meta". Beim zugehörigen keyup ist metaKey wieder false.
  • Browser-Kürzel wie ⌘+W, ⌘+T oder ⌘+Q lassen sich mit preventDefault() nicht verhindern.
  • In älteren Firefox-Versionen unter Linux war metaKey teilweise mit einer anderen Taste als der Super-Taste verknüpft. In aktuellen Browsern verhält sich die Eigenschaft einheitlich.
  • navigator.platform gilt als veraltet. Für die Plattformerkennung gibt es als Alternative navigator.userAgentData?.platform, das aber noch nicht in allen Browsern verfügbar ist.