Ich habe ein beforeunload Handler, dass aufgerufen wird, wenn der Benutzer von der Seite tatsächlich navigiert:überspringen beforeunload Handler, wenn der Benutzer auf Seite bleibt aufgrund Dialog innerhalb des zweiten Handler
$(window).on("beforeunload", function() {
cleanup();
});
Ein weiterer Teil meiner Anwendung könnte jedoch fügen Sie eine weitere beforeunload Handler, die den Benutzer fragt, ob er wirklich wegen eines laufenden Betrieb verlassen will:
$(window).on("beforeunload", function() {
return "Do you really want to leave";
});
Wie kann ich versichern, dass der zweite Handler wird immer zuerst genannt werden, und dass der erste Handler wird nicht wenn der Benutzer sich für s entscheidet Tay auf der Seite?
Ich habe bereits versucht, stattdessen das Ereignis unload
zu verwenden. Aber das funktioniert nicht, da es meine Aufräumfunktion und den Backend-Aufruf innerhalb dieser Funktion nicht zuverlässig ausführen wird.
Versuchen Sie Folgendes: http://stackoverflow.com/questions/17759703/is-there-any-way-to-detect-if-user-pressed-stay-on-page-or-leave -page-in-bef –
@IsmaelMiguel Danke, aber keine der Antworten in dieser Frage funktioniert in meinem Fall. Ich kann keine Zeitüberschreitung verwenden, da ich beim Verlassen des Benutzers etwas tun muss, nicht wenn er bleibt. Außerdem kann ich 'unload' nicht verwenden, da es einen Backend-Aufruf in meiner Bereinigungsfunktion ausführen muss und" Entladen "verwendet. Dieser Aufruf wird manchmal nicht ausgeführt. – basilikum
Sie haben Recht. Diese Anforderungen sind tatsächlich unterschiedlich. Habe es nicht bemerkt. Es tut mir wirklich leid. –