Die kürzeste Lösung für das Jahr 2020 (für diejenigen glücklichen Menschen, die IE nicht unterstützen müssen)
Getestet in Chrome, Firefox, Safari.
function onBeforeUnload(e) {
if (thereAreUnsavedChanges()) {
e.preventDefault();
e.returnValue = '';
return;
}
delete e['returnValue'];
}
window.addEventListener('beforeunload', onBeforeUnload);
Tatsächlich zeigt kein moderner Browser (Chrome, Firefox, Safari) den "Rückgabewert" als Frage an den Benutzer an. Stattdessen zeigen sie ihren eigenen Bestätigungstext (abhängig vom Browser). Wir müssen jedoch noch eine (sogar leere) Zeichenfolge zurückgeben, um diese Bestätigung in Chrome auszulösen.
Weitere Erklärungen finden Sie hier und hier auf MDN .