2016-06-30 7 views
1

In meinem Projekt muss ich schließen Ereignis im Browser über Web, Server und Datenbank befassen sich mit den Informationen, wenn Benutzer abmelden. Ich weiß nicht, wie man das Ereignis abfängt und das Close- und Refresh-Ereignis unterscheidet.wie das Ereignis zu fangen und zu unterscheiden schließen und aktualisieren Ereignis

habe ich versucht, diesen Code:

window.onbeforeunload = function() {  
    var n = window.event.screenX - window.screenLeft;  
    var b = n > document.documentElement.scrollWidth-20;  
    if(b && window.event.clientY < 0 || window.event.altKey) {  
     alert("close event");  
    }else{  
     alert("refresh event");  
    } 
} 

Aber es fängt nur das Refresh-Ereignis. Gibt es einen besseren Weg, um das Problem zu lösen?

Außerdem habe ich die How to differentiate browser close and refresh events in Chrome? gelesen, aber es gibt mir die Antwort nicht.

+0

Ich versuche, Sie Code zu verstehen. Wenn die Maus sich also außerhalb des Fensters befindet oder die Alt-Taste gedrückt wird, ist das ein nahes Ereignis? – 4castle

+0

Ich könnte falsch liegen, aber ich würde erwarten, dass Sie nicht den Unterschied zwischen einer Aktualisierung und einem Urlaub unterscheiden können. Was diese Seite betrifft, gehen Sie so oder so, ob Sie zurückkommen, ist der Seite zum Zeitpunkt des Verlassens fast sicher unbekannt. – DBS

Antwort

0

Eine Idee:. Richter von Cookie, um die Informationen zu erhalten, wenn es in ist log

Und der Browser in der Regel deaktivieren keine Cookies.

Wenn der Cookie deaktiviert ist, können Sie den Benutzer bitten, ihn zu aktivieren. Hier

ist ein Beispiel für Cookie:

function setCookie(name, value) //cookies setting 
{ 
var argv = setCookie.arguments; 
var argc = setCookie.arguments.length; 
var expires = (argc > 2) ? argv[2] : null; 
if(expires!=null) 
{ 
var LargeExpDate = new Date(); 
LargeExpDate.setTime(LargeExpDate.getTime() + (expires*1000*3600*24)); 
} 
document.cookie = name +value } 

//In Js 
setCookie("a","34234523542"); 

//read cookie: 
function WM_readCookie(name) 
{ 

//if there is no cookie,return false;or get value and return value 
if(document.cookie == '') 
return false; 
else 
return 
unescape(WM_getCookieValue(name)); 
} 



function WM_getCookieValue(name) 
{ 

// Declare variables. 

var firstChar,lastChar; 

// Get the entire cookie string. 
// (This may have other 
name=value pairs in it.) 

var theBigCookie = document.cookie; 

// Grab 
just this cookie from theBigCookie string. 

// Find the start of 
'name'. 

firstChar = theBigCookie.indexOf(name); 

// If you found it, 


if(firstChar != -1) 
{ 

// skip 'name' and '='. 

firstChar += 
name.length + 1; 

// Find the end of the value string (i.e. the next 
';'). 

lastChar = theBigCookie.indexOf(';', firstChar); 


if(lastChar == -1) lastChar = theBigCookie.length; 

// Return the 
value. 

return theBigCookie.substring(firstChar, lastChar); 

} else 
{ 

// If there was no cookie, return false. 

return false; 

} 
} 
+0

danke, ich werde es versuchen – ETalien8542