La semplice risposta è no - modelli di sicurezza browser non consentono di rilevare in modo esplicito in che modo l'utente ha scelto di lasciare la tua pagina (refresh/chiusura/interno link/link esterno).
detect refresh browser for unload/beforeunload when browser closed
E 'possibile - utilizzando un cookie - per verificare quando un utente carica la pagina se erano in precedenza su quel sito nella stessa sessione - per esempio rilevare se hanno ricreato - ma non prima di aggiornare:
Detect Browser Refresh in Javascript
Check if page gets reloaded or refreshed in Javascript
Un approccio parziale e imperfetta sarebbe quello di rilevare se hanno premuto "F5" o "Ctrl + R" o "Cmd + R" (tasti di scelta rapida per l'aggiornamento) appena prima dello scaricamento della pagina. Questo rileverà alcuni aggiornamenti, ma non dove l'utente ha effettivamente cliccato sul pulsante di aggiornamento.
(function($) {
var refreshKeyPressed = false;
var modifierPressed = false;
var f5key = 116;
var rkey = 82;
var modkey = [17, 224, 91, 93];
// Check for refresh keys
$(document).bind(
'keydown',
function(evt) {
// Check for refresh
if (evt.which == f5key || window.modifierPressed && evt.which == rkey) {
refreshKeyPressed = true;
}
// Check for modifier
if (modkey.indexOf(evt.which) >= 0) {
modifierPressed = true;
}
}
);
// Check for refresh keys
$(document).bind(
'keyup',
function(evt) {
// Check undo keys
if (evt.which == f5key || evt.which == rkey) {
refreshKeyPressed = false;
}
// Check for modifier
if (modkey.indexOf(evt.which) >= 0) {
modifierPressed = false;
}
}
);
$(window).bind('beforeunload', function(event) {
var message = "not refreshed";
if (refreshKeyPressed) {
message = "refreshed";
}
event.returnValue = message;
return message;
});
}(jQuery));
È inoltre possibile rilevare quando un link viene cliccato se la destinazione del collegamento è sullo stesso sito oppure no: How can I detect when the user is leaving my site, not just going to a different page?
fonte
2013-02-15 11:13:24