Signatur
Beschreibung
Event.returnValue ist eine Eigenschaft zum Lesen und Schreiben, die aus dem alten Ereignismodell des Internet Explorers stammt. Beim Lesen erhält man true, solange die Standardaktion des Ereignisses nicht verhindert wurde. Nach einem erfolgreichen Aufruf von preventDefault() ist der Wert false. Er ist also immer das logische Gegenteil von Event.defaultPrevented.
Setzt man event.returnValue = false, hat das dieselbe Wirkung wie event.preventDefault(): Die Standardaktion wird verhindert, zum Beispiel das Absenden eines Formulars oder das Öffnen eines Links. Das gilt nur, wenn das Ereignis abbrechbar ist (cancelable === true) und der Listener nicht als passive registriert wurde. Setzt man den Wert auf true, passiert nichts. Eine bereits verhinderte Standardaktion lässt sich so nicht wieder einschalten.
Die Eigenschaft wurde nur in den DOM-Standard aufgenommen, damit alte Seiten weiter funktionieren. In neuem Code solltest du preventDefault() zum Verhindern und defaultPrevented zum Abfragen verwenden. returnValue kommt vor allem in Altcode vor, der auch mit IE ≤ 8 laufen sollte (window.event.returnValue = false).
Rückgabewert
true, wenn die Standardaktion nicht verhindert wurde (Voreinstellung), sonst false. Entspricht !event.defaultPrevented.Beispiele
Wert vor und nach preventDefault() auslesen
const link = document.createElement('a');
link.href = 'https://example.com';
document.body.append(link);
link.addEventListener('click', (event) => {
console.log('vorher:', event.returnValue);
event.preventDefault();
console.log('nachher:', event.returnValue, '| defaultPrevented:', event.defaultPrevented);
});
link.click();
Altcode: Formularversand über returnValue = false verhindern
const form = document.createElement('form');
form.innerHTML = '<input name="email" value="">';
document.body.append(form);
form.addEventListener('submit', (event) => {
const email = form.elements.email.value.trim();
if (!email.includes('@')) {
// Legacy-Variante – wirkt wie event.preventDefault()
event.returnValue = false;
console.log('Ungültige E-Mail, Versand abgebrochen');
}
});
form.requestSubmit();
returnValue = true macht nichts rückgängig, bei nicht abbrechbaren Ereignissen wirkt es nicht
const target = new EventTarget();
target.addEventListener('speichern', (event) => {
event.returnValue = false;
event.returnValue = true; // wird ignoriert
console.log(event.type, 'cancelable:', event.cancelable, 'returnValue:', event.returnValue);
});
const abbrechbar = new Event('speichern', { cancelable: true });
const nichtAbbrechbar = new Event('speichern', { cancelable: false });
console.log('dispatch ->', target.dispatchEvent(abbrechbar));
console.log('dispatch ->', target.dispatchEvent(nichtAbbrechbar));
// Wichtig · Fallstricke
- Veraltet: Nimm in neuem Code
event.preventDefault()undevent.defaultPrevented.returnValuegibt es nur noch, damit alte Seiten funktionieren. - Nur in eine Richtung:
returnValue = truehebt ein früherespreventDefault()nicht auf. - Keine Wirkung bei
cancelable: falseund in Listenern mit{ passive: true }. Im zweiten Fall geben Browser oft eine Warnung in der Konsole aus. - Nicht verwechseln mit
BeforeUnloadEvent.returnValue: Dort wird traditionell ein String gesetzt, der den Bestätigungsdialog „Seite verlassen?“ auslöst. Das ist eine eigene Eigenschaft mit anderer Bedeutung. return falsein eineron…-Property (z. B.onclick) verhindert ebenfalls die Standardaktion. In einemaddEventListener-Listener hat es dagegen keine Wirkung, dort helfen nurpreventDefault()oderreturnValue = false.- Kompatibilität: Chrome, Edge, Safari und Firefox (ab Version 66) unterstützen die Eigenschaft.