Signatur
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
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);
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
TypeErrorauslösen. - Keine Event-Konstanten mehr: Ausdrücke wie
Event.CLICKergeben in modernen Browsernundefined. Der Aufruf selbst wirft trotzdem keinen Fehler. - Ersatz: Verwende
removeEventListener(type, listener, { capture: true }). Der Wert voncapturemuss mit dem beim Registrieren übereinstimmen, sonst wird der Listener nicht entfernt. Alternativ kannst duAbortSignalüber die Optionsignalnutzen. - 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ürdocument.releaseEvents().