2009-12-01 5 views
7

Je veux faire une fonctionnalité sur la déconnexion, si l'utilisateur a fermé directement son navigateur alors même fonctionnalité veut faire, nous ne pouvons pas faire à la page de déchargement, car il y a plus de 100 pages mon site parce que cela fonctionnera sur la redirection de chaque pageDétecter navigateur Fermer sur Asp.net

Merci

+2

Cela ne peut pas être fait. –

+0

La détection de la fermeture du navigateur n'a rien à voir avec asp.net. C'est une chose du côté du client. –

Répondre

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> 

Appelez le logout.aspx lorsque la fenêtre se ferme à l'aide javascript + jquery. Faites ce que vous voulez faire dans l'événement de chargement de la page logout.aspx.

L'extrait ci-dessus devra être ajouté dans le fichier html de votre page maître.

+0

+1, semble raisonnable. La fermeture du navigateur doit être effectuée côté client (JavaScript) car il ne sera pas renvoyé au serveur qui ne sera donc pas averti à ce sujet. – Juri

+0

Mais le PO a dit qu'ils ne voulaient pas utiliser le déchargement de la page, non? Un problème est que cet événement se déclenchera non seulement lorsque l'utilisateur ferme son navigateur (mais seulement dans * certains * navigateurs), mais aussi lorsqu'il navigue vers la page suivante. – RickNZ

+0

-1 Cela ne fonctionne pas comme prévu –

7

Vous pouvez avoir un bouton pour le cas de "déconnexion".

Malheureusement, il n'existe aucun moyen fiable d'être averti si l'utilisateur ferme son navigateur. Autre que déchargement de la page côté client, que vous avez dit que vous ne voulez pas, à propos de la seule autre option est l'interrogation périodique Ajax; les deux sont laids et notoirement peu fiables.

En général, les délais d'attente côté serveur constituent une meilleure approche.

+0

Pouvez-vous s'il vous plaît donner quelques exemples de code – Prorammer81

1

N'est-ce pas ce que Session_OnEnd dans global.asax est pour?

Cet événement n'est pas déclenché lorsque le navigateur est fermé.

+2

Session_OnEnd n'est pas toujours fiable, seulement allume pour le mode de session InProc – JonoW

+0

Ok, merci pour la leçon (douloureuse) ;-) –

Questions connexes