Start · Sprachen · JavaScript · Referenz · Event.returnValue

Event.returnValue

Eigenschaft

Veraltetes boolesches Flag: <code>true</code>, solange die Standardaktion des Ereignisses nicht verhindert wurde. Das Setzen auf <code>false</code> wirkt wie <code>preventDefault()</code>.

seit JavaScript Veraltet (Legacy aus dem Internet Explorer), im DO deprecated seit ja Kategorie: webapi

Signatur

Event.returnValue

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

Typ
boolean
Beschreibung
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();
vorher: true nachher: false | defaultPrevented: true

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();
Ungültige E-Mail, Versand abgebrochen

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));
speichern cancelable: true returnValue: false dispatch -> false speichern cancelable: false returnValue: true dispatch -> true

// Wichtig · Fallstricke

  • Veraltet: Nimm in neuem Code event.preventDefault() und event.defaultPrevented. returnValue gibt es nur noch, damit alte Seiten funktionieren.
  • Nur in eine Richtung: returnValue = true hebt ein früheres preventDefault() nicht auf.
  • Keine Wirkung bei cancelable: false und 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 false in einer on…-Property (z. B. onclick) verhindert ebenfalls die Standardaktion. In einem addEventListener-Listener hat es dagegen keine Wirkung, dort helfen nur preventDefault() oder returnValue = false.
  • Kompatibilität: Chrome, Edge, Safari und Firefox (ab Version 66) unterstützen die Eigenschaft.