Start · Sprachen · JavaScript · Referenz · Window.event

Window.event

Eigenschaft

Die schreibgeschützte Eigenschaft <code>window.event</code> liefert das Event, das gerade von einem Event-Handler verarbeitet wird, sonst <code>undefined</code>.

seit JavaScript Veraltet (deprecated), aber in allen gängigen Brow deprecated seit ja Kategorie: webapi

Signatur

Window.event

Beschreibung

window.event ist eine veraltete globale Eigenschaft aus der Zeit des Internet Explorer. Solange ein Event-Handler läuft, verweist sie auf das Event-Objekt, das der Browser gerade verteilt. Außerhalb eines Event-Handlers ist der Wert undefined.

Früher war sie im IE die einzige Möglichkeit, an das Event-Objekt zu kommen, weil Handler kein Argument bekamen. Heute übergibt jeder Browser das Event als ersten Parameter an den Listener. Deshalb sollte man window.event in neuem Code nicht verwenden.

Nützlich ist die Eigenschaft höchstens beim Pflegen von Altcode, etwa bei Inline-Handlern wie onclick="handle()", die das Event nicht weiterreichen, oder beim Debuggen. Wichtig: Der Wert kann auf ein anderes Event zeigen als erwartet, zum Beispiel bei verschachtelt ausgelösten Events. Und in Handlern aus einem Shadow-DOM-Baum ist er undefined.

Rückgabewert

Typ
Event | undefined
Beschreibung
Das gerade verarbeitete Event-Objekt oder undefined, wenn kein Event-Handler läuft oder der Handler zu einem Shadow-Baum gehört.

Beispiele

Vergleich mit dem Event-Parameter des Listeners

const button = document.createElement('button');
button.textContent = 'Klick mich';
document.body.append(button);

button.addEventListener('click', (e) => {
  // Beide verweisen auf dasselbe Objekt
  console.log(window.event === e);
  console.log(window.event.type);
});

button.click();
true click

Außerhalb eines Handlers ist der Wert undefined

console.log(window.event);

setTimeout(() => {
  // Ein Timer ist kein Event-Handler
  console.log(window.event);
}, 0);
undefined undefined

Altcode: Inline-Handler ohne Event-Argument

// HTML: <a href="/info" onclick="legacyHandler()">Info</a>
function legacyHandler() {
  const ev = window.event; // nur für Altcode!
  ev.preventDefault();
  console.log('Navigation verhindert:', ev.target.getAttribute('href'));
}

// Besser: das Event ausdrücklich übergeben
// <a href="/info" onclick="modernHandler(event)">Info</a>
const modernHandler = (event) => {
  event.preventDefault();
  console.log('Navigation verhindert:', event.target.getAttribute('href'));
};
Navigation verhindert: /info

// Wichtig · Fallstricke

  • Veraltet: Nimm immer den Event-Parameter des Listeners (addEventListener('click', (e) => …)). In Inline-Handlern steht er als event zur Verfügung.
  • Firefox unterstützt window.event erst seit Version 66. Davor war der Wert dort undefined, und Code, der sich darauf verließ, brach ab.
  • In Handlern, deren Ziel in einem Shadow-DOM liegt, ist der Wert undefined. So bleibt die Kapselung des Shadow-DOM gewahrt.
  • Der Wert gilt nur, solange der Handler synchron läuft. Nach einem await, in setTimeout oder in Promise-Callbacks ist er undefined oder zeigt auf ein anderes Event.
  • Werden Events verschachtelt ausgelöst (etwa per dispatchEvent innerhalb eines Handlers), zeigt window.event auf das innerste Event, das gerade läuft.
  • Wenn eine lokale Variable oder ein Parameter event heißt, verdeckt sie die globale Eigenschaft. Das führt schnell zu Verwechslungen.