2009-12-01 23 views
7

Quiero hacer algunas funcionalidades al cerrar la sesión, si el usuario cerró directamente su navegador entonces la misma funcionalidad quiere hacer, no podemos hacerlo en la descarga de página porque hay más de 100 páginas en mi sitio web, ya que esto funcionará en la redirección de cada páginaDetectar navegador Cerrar en Asp.net

Gracias

+2

No se puede hacer. –

+0

La detección del cierre del navegador no tiene nada que ver con asp.net. Es una cosa del lado del cliente. –

Respuesta

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> 

Llame al logout.aspx cuando la ventana se cierra usando javascript + jQuery. Haga lo que quiera hacer en el evento de carga de la página logout.aspx.

El fragmento anterior deberá agregarse en el html de su página maestra.

+0

+1, suena razonable. El cierre del navegador debe hacerse desde el lado del cliente (JavaScript), ya que no se enviará de vuelta al servidor, por lo que no se lo notificará. – Juri

+0

Pero el OP dijo que no querían usar la descarga de la página, ¿verdad? Un problema es que este evento se desencadenará no solo cuando el usuario cierra su navegador (aunque solo en * algunos * navegadores), sino también cuando navega a la página siguiente. – RickNZ

+0

-1 Esto no funciona como se esperaba –

7

Puede tener un botón para el caso de "cierre de sesión".

Lamentablemente, no existe una forma confiable de ser notificado si el usuario cierra su navegador. Aparte de la descarga de la página del lado del cliente, que ha dicho que no desea, la única otra opción es la votación periódica basada en Ajax; ambos son feos y notoriamente poco confiables.

En general, los tiempos de espera del servidor son un mejor enfoque.

+0

Puede dar algunas muestras de código – Prorammer81

1

¿No es esto lo que Session_OnEnd en global.asax es para?

Este evento no se activa cuando el navegador está cerrado.

+2

Session_OnEnd no siempre es confiable, solo se activa para el modo de sesión InProc – JonoW

+0

Ok, gracias por la (dolorosa) lección ;-) –

Cuestiones relacionadas