Start · Sprachen · JavaScript · Referenz · Window.captureEvents()

Window.captureEvents()

Methode

Veraltete Methode aus der Netscape-4-Ära, die heute nichts bewirkt. Sie gibt nur noch aus Kompatibilitätsgründen <code>undefined</code> zurück.

seit JavaScript Veraltet (deprecated) — in allen Browsern nur noch deprecated seit ja Kategorie: webapi

Signatur

Window.prototype.captureEvents(eventType)

Beschreibung

window.captureEvents() stammt aus dem Ereignismodell von Netscape Navigator 4. Damals musste ein Fenster oder Dokument ausdrücklich anmelden, welche Ereignistypen es abfangen wollte, etwa Event.CLICK | Event.MOUSEMOVE. Erst danach wurden die passenden Handler auf dieser Ebene aufgerufen.

Der HTML-Standard legt heute fest, dass die Methode nichts tut. Sie ist nur noch vorhanden, damit sehr alter Code keinen TypeError auslöst. Übergebene Argumente werden ignoriert, und am Verhalten von Ereignissen ändert sich nichts.

Für neuen Code solltest du die Methode nie verwenden. Um Ereignisse schon in der Capture-Phase abzufangen, nimmst du addEventListener() mit der Option { capture: true }. Die Methode taucht praktisch nur noch auf, wenn du alte Skripte modernisierst.

Parameter

Name Typ Default Beschreibung
$eventType number Früher eine Bitmaske aus Konstanten wie Event.CLICK. Heute wird der Wert vollständig ignoriert. In modernen Browsern gibt es diese Konstanten meist nicht mehr, dann ist der Wert undefined.

Rückgabewert

Typ
undefined
Beschreibung
Gibt immer undefined zurück und hat keine Nebenwirkung.

Beispiele

Aufruf ohne Wirkung

// Der Aufruf ist erlaubt, bewirkt aber nichts
const result = window.captureEvents();
console.log(result);
console.log(typeof window.captureEvents);
undefined function

Alten Netscape-Code modernisieren

// ALT (Netscape 4):
// window.captureEvents(Event.CLICK);
// window.onclick = handleClick;

// NEU: Klicks in der Capture-Phase auf window abfangen
const handleClick = (event) => {
  console.log('Klick auf:', event.target.tagName);
};

window.addEventListener('click', handleClick, { capture: true });

// Später wieder abmelden (capture muss übereinstimmen)
window.removeEventListener('click', handleClick, { capture: true });

Legacy-Aufruf gefahrlos entfernen

// Prüfen, ob sich durch den Aufruf irgendetwas ändert
let count = 0;
const onKey = () => count++;

document.addEventListener('keydown', onKey);
window.captureEvents(); // hat keine Auswirkung auf onKey

document.dispatchEvent(new KeyboardEvent('keydown', { key: 'a' }));
console.log(count);
1

// Wichtig · Fallstricke

  • Veraltet: Die Methode ist deprecated. Laut HTML-Standard muss sie nichts tun. Browser dürfen sie künftig entfernen, und Linter wie TypeScript markieren sie als veraltet.
  • Nicht verwechseln: Mit der Capture-Phase des DOM-Ereignismodells hat sie nichts zu tun. Dafür nimmst du addEventListener(type, handler, { capture: true }) oder als dritten Parameter true.
  • Konstanten fehlen: Event.CLICK und ähnliche Konstanten gibt es in modernen Browsern meist nicht mehr. Alter Code übergibt daher oft einfach undefined. Einen Fehler löst das nicht aus.
  • Das Gegenstück window.releaseEvents() sowie document.captureEvents() und document.releaseEvents() sind ebenfalls wirkungslos.
  • Kompatibilität: Aus Rückwärtskompatibilität in Chrome, Firefox, Safari und Edge vorhanden, aber überall ohne Funktion.