Start · Sprachen · JavaScript · Referenz · MouseEvent.shiftKey

MouseEvent.shiftKey

Eigenschaft

Schreibgeschützter boolescher Wert: <code>true</code>, wenn beim Auslösen des Mausereignisses die Umschalttaste (Shift) gedrückt war, sonst <code>false</code>.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

MouseEvent.shiftKey

Beschreibung

Die Eigenschaft shiftKey eines MouseEvent zeigt an, ob die Umschalttaste (Shift) in dem Moment gedrückt war, in dem das Mausereignis ausgelöst wurde. Sie ist schreibgeschützt und steht bei allen von MouseEvent abgeleiteten Ereignissen zur Verfügung, also auch bei PointerEvent, WheelEvent und DragEvent.

Typische Einsatzfälle sind Mehrfachauswahl mit Bereichen (Shift+Klick markiert alle Einträge zwischen dem zuletzt gewählten und dem aktuellen), alternative Aktionen (z. B. Shift+Klick öffnet einen Link in einem neuen Fenster) sowie eingeschränkte Bewegungen in Zeichen- oder Grafikanwendungen (Shift beim Ziehen hält das Seitenverhältnis fest oder richtet an Achsen aus).

Oft wird shiftKey zusammen mit ctrlKey, altKey und metaKey ausgewertet, um Tastenkombinationen zu unterscheiden. Der Wert beschreibt nur den Zustand zum Zeitpunkt des Ereignisses; um den Zustand anderer Modifikatortasten wie CapsLock abzufragen, verwendet man getModifierState().

Rückgabewert

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

Beispiele

Shift+Klick erkennen

const button = document.querySelector('#aktion');

button.addEventListener('click', (event) => {
  if (event.shiftKey) {
    console.log('Klick mit gedrückter Umschalttaste');
  } else {
    console.log('Normaler Klick');
  }
});
Klick mit gedrückter Umschalttaste

Bereichsauswahl in einer Liste per Shift+Klick

const items = [...document.querySelectorAll('#liste li')];
let letzterIndex = null;

items.forEach((item, index) => {
  item.addEventListener('click', (event) => {
    if (event.shiftKey && letzterIndex !== null) {
      const [start, ende] = [letzterIndex, index].sort((a, b) => a - b);
      items.slice(start, ende + 1).forEach((el) => el.classList.add('ausgewaehlt'));
    } else {
      item.classList.toggle('ausgewaehlt');
    }
    letzterIndex = index;
  });
});

Tastenkombinationen mit anderen Modifikatoren kombinieren

document.addEventListener('mousedown', (event) => {
  const modifikatoren = [
    event.ctrlKey && 'Strg',
    event.altKey && 'Alt',
    event.shiftKey && 'Shift',
    event.metaKey && 'Meta'
  ].filter(Boolean);

  console.log(`Maustaste ${event.button} mit: ${modifikatoren.join('+') || 'keinen Modifikatoren'}`);
});
Maustaste 0 mit: Strg+Shift

Synthetisches Ereignis mit shiftKey erzeugen

const ziel = document.body;
ziel.addEventListener('click', (e) => console.log('shiftKey:', e.shiftKey));

const klick = new MouseEvent('click', { bubbles: true, shiftKey: true });
ziel.dispatchEvent(klick);
shiftKey: true

// Wichtig · Fallstricke

  • Schreibgeschützt: Eine Zuweisung wie event.shiftKey = true hat keine Wirkung. Für Tests setzt man den Wert über das Options-Objekt des Konstruktors new MouseEvent(type, { shiftKey: true }).
  • Textauswahl: Shift+Klick erweitert im Browser standardmäßig die Textauswahl. Wer Shift+Klick für eigene Aktionen verwendet, sollte gegebenenfalls im mousedown-Handler event.preventDefault() aufrufen oder per CSS user-select: none setzen.
  • Browser-Vorgaben: Shift+Klick auf Links öffnet in vielen Browsern ein neues Fenster; Shift+Mausrad scrollt oft horizontal (und kann bei WheelEvent deltaX statt deltaY liefern).
  • Barrierefreiheit: Funktionen, die nur per Shift+Klick erreichbar sind, sollten auch per Tastatur oder Kontextmenü zugänglich sein.
  • Kompatibilität: Wird von allen modernen Browsern seit Langem unterstützt.