2009-12-01 17 views
7

Voglio eseguire alcune funzionalità alla disconnessione, se l'utente chiude direttamente il suo browser, allora la stessa funzionalità vuole fare, non possiamo fare a pagina scaricare perché ci sono più di 100 pagine in il mio sito web perché questo funziona su reindirizzamento da ogni paginaDetect Browser Close su Asp.net

Grazie

+2

Non è possibile. –

+0

Rilevare la chiusura del browser non ha nulla a che fare con asp.net. È una cosa del lato client. –

risposta

15
<script type="text/javascript"> 
var closing = true; 
$(function() { 
    $("a,input[type=submit]").click(function() { closing = false; }); 
    $(window).unload(function() { 
     if (closing) { 
      jQuery.ajax({ url: "http://localhost:49591/Account/LogOff", async: false }); 
     } 
    }); 
}); 
</script> 

chiamata la logout.aspx quando la finestra si chiude utilizzando JavaScript + jquery. Fai tutto ciò che vuoi fare nell'evento di caricamento della pagina logout.aspx.

Il snippet sopra riportato dovrà essere aggiunto nel codice HTML della tua pagina principale.

+0

+1, sembra ragionevole. La chiusura del browser deve essere eseguita sul lato client (JavaScript) in quanto non verrà rinviata al server che pertanto non riceverà alcuna notifica al riguardo. – Juri

+0

Ma l'OP ha detto che non volevano usare lo scaricamento della pagina, giusto? Un problema è che questo evento si attiva non solo quando l'utente chiude il browser (anche se solo in * alcuni * browser), ma anche quando navigano alla pagina successiva. – RickNZ

+0

-1 Questo non funziona come previsto –

7

È possibile avere un pulsante per il caso di "disconnessione".

Sfortunatamente, non esiste un modo affidabile per essere avvisati se l'utente chiude il proprio browser. A parte lo scaricamento della pagina sul lato client, che hai detto che non vuoi, l'unica altra opzione è il polling periodico basato su Ajax; entrambi sono brutti e notoriamente inaffidabili.

In generale, i timeout sul lato server rappresentano un approccio migliore.

+0

Potete fornire alcuni esempi di codice – Prorammer81

1

Non è questo per Session_OnEnd in global.asax?

Questo evento non viene attivato quando il browser è chiuso.

+2

Session_OnEnd non è sempre affidabile, si attiva solo per la modalità sessione InProc – JonoW

+0

Ok, grazie per la (dolorosa) lezione ;-) –