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

Window.releaseEvents()

Methode

Veraltete Methode, die das Fenster von der Erfassung von Ereignissen eines bestimmten Typs freigibt. In heutigen Browsern hat sie keine Wirkung.

seit JavaScript Veraltet (Netscape 4); in modernen Browsern nur no deprecated seit ja Kategorie: webapi

Signatur

Window.prototype.releaseEvents(eventType)

Beschreibung

window.releaseEvents() stammt aus dem Ereignismodell von Netscape Navigator 4. Mit window.captureEvents() konnte man dort festlegen, dass bestimmte Ereignisse zuerst vom window-Objekt abgefangen werden, bevor sie ihr eigentliches Ziel erreichen. releaseEvents() hat diese Erfassung wieder aufgehoben.

Übergeben wurde eine Bitmaske aus Konstanten des alten Event-Objekts, zum Beispiel Event.CLICK oder Event.KEYPRESS. Mehrere Typen hat man mit dem bitweisen ODER-Operator (|) kombiniert.

Heute ist die Methode nur noch aus Kompatibilitätsgründen vorhanden. Laut HTML-Standard macht sie nichts: Sie nimmt beliebige Argumente an, gibt undefined zurück und ändert nichts an der Ereignisverarbeitung. Seit DOM Level 2 steuert man die Ereignis-Erfassung mit addEventListener() und der Option capture. Aufheben lässt sie sich mit removeEventListener().

Im Alltag begegnet man releaseEvents() nur noch in sehr altem Code. Dort kann man den Aufruf ohne Folgen löschen oder, wenn die ursprüngliche Absicht erhalten bleiben soll, durch removeEventListener() ersetzen.

Parameter

Name Typ Default Beschreibung
$eventType number Historisch eine Bitmaske aus Event-Konstanten (z. B. Event.CLICK | Event.MOUSEMOVE). Moderne Browser werten diesen Wert nicht mehr aus. Die Konstanten selbst gibt es dort ebenfalls nicht mehr, Event.CLICK ergibt also undefined.

Rückgabewert

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

Beispiele

Zeigen, dass der Aufruf wirkungslos ist

// Die Methode existiert noch, bewirkt aber nichts
console.log(typeof window.releaseEvents);
const result = window.releaseEvents();
console.log(result);
function undefined

Alter Netscape-4-Code (nur historisch)

// So sah das früher aus – heute ohne Wirkung
function onClick(e) {
  console.log('Klick erfasst');
  return routeEvent(e);
}

window.captureEvents(Event.CLICK);
window.onclick = onClick;

// Später: Erfassung wieder aufheben
window.releaseEvents(Event.CLICK);

Moderner Ersatz mit add-/removeEventListener

const handleClick = (event) => {
  console.log('Klick in Capture-Phase auf', event.target.tagName);
};

// Erfassung in der Capture-Phase starten
window.addEventListener('click', handleClick, { capture: true });

// Entspricht dem historischen releaseEvents(Event.CLICK):
// Die capture-Option muss dieselbe sein wie beim Registrieren!
window.removeEventListener('click', handleClick, { capture: true });

Erfassung mit AbortController beenden

const controller = new AbortController();

['keydown', 'mousedown'].forEach((type) => {
  window.addEventListener(type, (e) => console.log('Erfasst:', e.type), {
    capture: true,
    signal: controller.signal,
  });
});

// Alle Listener auf einmal entfernen – modernes Gegenstück zu releaseEvents()
setTimeout(() => controller.abort(), 5000);

// Wichtig · Fallstricke

  • Veraltet: Setze die Methode in neuem Code nicht ein. Laut HTML-Standard ist sie ausdrücklich wirkungslos. Browser behalten sie nur, damit alte Seiten keinen TypeError auslösen.
  • Keine Event-Konstanten mehr: Ausdrücke wie Event.CLICK ergeben in modernen Browsern undefined. Der Aufruf selbst wirft trotzdem keinen Fehler.
  • Ersatz: Verwende removeEventListener(type, listener, { capture: true }). Der Wert von capture muss mit dem beim Registrieren übereinstimmen, sonst wird der Listener nicht entfernt. Alternativ kannst du AbortSignal über die Option signal nutzen.
  • Kompatibilität: Chrome, Firefox, Safari und Edge stellen die Methode als leeren Stub bereit. In Node.js und Web Workern gibt es sie nicht, denn dort fehlt das window-Objekt. Dasselbe gilt für document.releaseEvents().