Ich habe eine Anforderung, den Benutzer im Browser schließen oder Tab schließen abzurechnen. Ich habe versucht, mit dem folgenden Code und es funktioniert gut, außer für die folgenden: 1.) Wenn ich auf die Schaltfläche Browseraktualisierung, loggt es immer noch 2.) Wenn ich die URL im Browser ändern und drücken Sie die Eingabetaste protokolliert out Beide der oben genannten sind unerwünscht und ich möchte verhindern. Kann jemand vorschlagen, wie? Hier ist mein Skript:Logout auf Browser schließen oder Tab schließen mit jquery/Javascript
var validNavigation = false;
function wireUpEvents() {
window.onbeforeunload = function(e) {
\t if (!validNavigation) {
endSession();
}
}
\t
//Hits the server and invalidates the session
\t function endSession() {
\t \t $.ajax({
\t \t url : "performLogout..",
\t \t type : "GET",
\t \t async: false,
\t \t success : function(response) {},
\t \t error: function(response) {}
\t \t });
\t \t }
//On click of F5
document.onkeydown = function disableKeys() {
\t if(typeof event != 'undefined') {
\t if(event.keyCode == 116) {
\t validNavigation = true;
\t event.keyCode = 0;
\t //return false; //return false if u want to disable refresh
\t }
\t }
\t };
// Attach the event click for all links in the page
$("a").on("click", function() {
validNavigation = true;
});
// Attach the event submit for all forms in the page
$("form").on("submit", function() {
validNavigation = true;
});
// Attach the event click for all inputs in the page
$("input[type=submit]").on("click", function() {
validNavigation = true;
});
$("select#select-id").on("change", function() {
\t validNavigation = true;
\t });
}
// Wire up the events as soon as the DOM tree is ready
$(document).ready(function() {
wireUpEvents();
});
Dank
Haben Sie _any_ Forschung dazu vorher getan ...? http://stackoverflow.com/search?q=log+out+when+browser+tab+closed – CBroe
@CBroe Ich habe ein paar Beiträge gelesen und konnte keine positive Antwort finden. Der Grund, den ich gefragt habe, ist, wenn jemand weiß, ob es eine Lösung oder einen Workaround für dieses Problem gibt, um meine Anforderung zu vervollständigen. Danke, –
Nun, das sollte dir schon gezeigt haben, dass es keinen zuverlässigen, browserübergreifenden Weg gibt, dies zu erreichen. – CBroe