In meiner Chat-Anwendung muss ich eine Bestätigung vom Benutzer erhalten, wenn meine Anwendung geschlossen wird.
Also habe ich die window.onbeforeunload
zur Bestätigung und window.onunload
für verwendet
logout()
.
Beide Funktionen funktionieren jedoch in IE und Chrome. (Anwendung funktioniert gut)
window.onbeforeunload
funktioniert nicht in Opera und meine Nachricht wird in Firefox nicht angezeigt.window.onunload
funktioniert nicht in Safari, Opera und Firefox.
Mein JavaScript-Code lautet:
// Used for confirmation, to closing the window
window.onbeforeunload = function () {
return "Are you sure want to LOGOUT the session ?";
};
// Used to logout the session, when browser window was closed
window.onunload = function () {
if((sessionId != null)&&(sessionId!="null")&& (sessionId != ""))
logout();
};
Ich habe die gleiche Funktion auch mit JQuery ausprobiert.
<script type="text/javascript">
$(window).on('beforeunload', function() {
return 'Are you sure want to LOGOUT the session ?';
});
$(window).unload(function() {
if ((sessionId != null) && (sessionId != "null") && (sessionId != "")) {
logout();
}
});
</script>
javascript
javascript-events
jquery
Menschliches Wesen
quelle
quelle
onbeforeunload
und seine Unterstützung istonunload
unvollständig.Antworten:
Leider werden die von Ihnen verwendeten Methoden in diesen Browsern nicht unterstützt. Um meine Antwort (dieses nicht unterstützende Verhalten) zu unterstützen, habe ich unten Links angegeben.
onbeforeunload
undonunload
nicht arbeiten inopera
... um dies zu unterstützenObwohl das
onunload
Ereignis nicht vollständig funktioniert, können Sieonunload
eine Warnung anzeigen, wenn ein Benutzer auf einen Link klickt, um von einer Seite mit einem nicht gespeicherten Formular weg zu navigieren.onunload
nicht arbeiten insafari
... um dies zu unterstützenSie können lieber versuchen, das
pagehide
Ereignis im Safari-Browser anstelle von zu verwendenonunload
.onunload
nicht arbeiten infirefox
... um dies zu unterstützenAuch in FF müssen sie noch eine Lösung finden
Wünsche dir viel Glück Prost.
quelle
onunload
in Firefox nicht funktioniert, ist gemeint, wenn sich die Seite nur in einer Popup-Situation befindet. "window.onUnload funktioniert nicht, wenn sich die Seite in einem Popup befindet"Hier ist die Arbeitslösung für dh Firefox und Chrom:
var myEvent = window.attachEvent || window.addEventListener; var chkevent = window.attachEvent ? 'onbeforeunload' : 'beforeunload'; /// make IE7, IE8 compitable myEvent(chkevent, function(e) { // For >=IE7, Chrome, Firefox var confirmationMessage = 'Are you sure to leave the page?'; // a space (e || window.event).returnValue = confirmationMessage; return confirmationMessage; });
quelle
Ich konnte es mit jQuery's in IE und FF zum Laufen bringen:
$(window).bind('beforeunload', function(){ });
statt: entladen, entladen oder vor dem Entladen
quelle
Ich habe die Lösung für
onunload
alle Browser außer Opera erhalten, indem ich die asynchrone Ajax-Anforderung in eine synchrone Anforderung geändert habe.xmlhttp.open("POST","LogoutAction",false);
Es funktioniert gut für alle Browser außer Opera .
quelle
Das Ereignis onunload wird nicht in allen Browsern aufgerufen. Schlimmer noch, Sie können den Rückgabewert des Ereignisses onbeforeunload nicht überprüfen. Dies verhindert, dass wir tatsächlich eine Abmeldefunktion ausführen.
Sie können dies jedoch umgehen.
Rufen Sie als erstes im Ereignis onbeforeunload die Abmeldung auf. Dann fordern Sie den Benutzer auf. Wenn der Benutzer die Abmeldung abbricht, melden Sie sich mithilfe des onfocus-Ereignisses automatisch wieder an. Ein bisschen rückwärts, aber ich denke, es sollte funktionieren.
'use strict'; var reconnect = false; window.onfocus = function () { if (reconnect) { reconnect = false; alert("Perform an auto-login here!"); } }; window.onbeforeunload = function () { //logout(); var msg = "Are you sure you want to leave?"; reconnect = true; return msg; };
quelle
Firefox zeigt einfach keine benutzerdefinierten Nachrichten vor dem Herunterladen an. Mozilla sagt, dass sie Endbenutzer vor schädlichen Websites schützen, auf denen möglicherweise irreführender Text angezeigt wird.
quelle