Ich benutze onbeforeunload Ereignis, um ajax Anfrage zu senden, um etwas Säuberungsaufgabe durchzuführen.Unterdrückungsbestätigungsdialog während onbeforeunload
Wenn ich onbeforeunload verwende, wird beim Schließen der Registerkarte der Bestätigungsdialog angezeigt. Was ich will, ist kein Bestätigungsdialog anzuzeigen und nur die Bereinigungsanfrage zu senden. Folgendes ist das Skript, das ich verwende.
window.onbeforeunload = unloadFunction;
function unloadFunction() {
var test_id = $('#test_id').val();
jQuery.ajax({
url: "/test/cleanup/" + test_id,
cache: false
}).done(function() {
return false;
});
return false;
}
Gibt es eine Möglichkeit, den Bestätigungsdialog zu unterdrücken?
Wie einige Vorschläge, habe ich versucht, Return-Anweisung zu return ;
anstelle von return false;
zu ändern. Aber das funktioniert auch nicht.
Gibt 'null zurück;' tun, wonach Sie suchen? – Delorian
Rückgabewert null; zeigt den Dialog nicht an, sendet aber den Ajax-Ruf nicht an den Server. –
Dies könnte daran liegen, dass Sie nach dem Ajax-Anruf zurückrufen. Denken Sie daran, dass Ihr Ajax-Aufruf standardmäßig asynchron ist, sodass die Rückgabe aufgerufen wird, bevor der Ajax-Aufruf abgeschlossen wurde. Übergeben Sie in Ihren Ajax-Anrufeinstellungen async: false, und Sie können die Funktion done entfernen. Sie sollten dann die Rückgabe null nicht treffen, bis der synchrone Ajax-Aufruf abgeschlossen ist. – Delorian