Signatur
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
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 …');
}
});
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}`);
});
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();
}
});
Synthetisches Ereignis mit metaKey erzeugen
const evt = new KeyboardEvent('keydown', { key: 'c', metaKey: true });
console.log(evt.metaKey);
console.log(evt.getModifierState('Meta'));
// 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
metaKeysollten deshalb vor allem für macOS gedacht sein. - macOS schluckt
keyup: Solange ⌘ gedrückt ist, lösen andere Tasten in vielen Browsern keinkeyupaus. Logik, die sich aufkeyupverlässt, kann dadurch hängen bleiben. Kürzel besser inkeydownauswerten. - Die Meta-Taste selbst: Beim
keydownder Meta-Taste istmetaKeybereitstrueundevent.keyist"Meta". Beim zugehörigenkeyupistmetaKeywiederfalse. - Browser-Kürzel wie ⌘+W, ⌘+T oder ⌘+Q lassen sich mit
preventDefault()nicht verhindern. - In älteren Firefox-Versionen unter Linux war
metaKeyteilweise mit einer anderen Taste als der Super-Taste verknüpft. In aktuellen Browsern verhält sich die Eigenschaft einheitlich. navigator.platformgilt als veraltet. Für die Plattformerkennung gibt es als Alternativenavigator.userAgentData?.platform, das aber noch nicht in allen Browsern verfügbar ist.