2010-11-10 17 views
1

Je souhaite effectuer un nettoyage dans mon application Web ASP.NET lorsque l'utilisateur ferme la fenêtre IE ou la page à onglet dans laquelle la page est ouverte. Je regardais l'événement unload de l'élément "body", mais l'événement unload est également déclenché lorsque vous cliquez sur le bouton Refresh dans IE ou modifiez l'URL en tapant dans la barre d'adresse.Comment se connecter à l'événement close d'IE

Des idées sur quel événement attraper pour intercepter la fenêtre IE (6.0 et 7.0) et la fermeture de l'onglet?

Répondre

1

utilisez les sessions InProc et l'événement Session_End dans global.ascx pour effectuer votre nettoyage. javascript est trop peu fiable pour cela.

+0

Les sessions ne sont pas traitées dans un cache distribué. – Metallikanz

+0

droite. J'implémenterais alors une sorte de thread de surveillance côté serveur, qui vérifie un horodatage de la dernière requête par session toutes les X minutes, et fait votre ménage dedans. vous pouvez même ajouter un postback AJAX à votre page si vous voulez vraiment vérifier si un navigateur est toujours ouvert, mais encore une fois, ce n'est pas 100% – jasper

0

Javascript ne sera pas fiable/assez contraignant pour des raisons de sécurité. Cela dépend vraiment de ce que vous essayez de faire, si vous essayez d'envoyer du code sur la machine du client, alors cela va être difficile/impossible (ce qui est une bonne chose, je ne veux pas vraiment de sites web auxquels je ne fais pas confiance) jouer avec mon navigateur sur l'une de ses fonctionnalités principales, en fermant une fenêtre). Si vous voulez exécuter des scripts côté serveur pour marquer l'utilisateur comme étant parti, encore une fois, difficile/impossible, comme Jasper a mentionné global.ascx ira d'une manière ou d'une autre pour vous aider, mais sinon vous devrez avoir des minuteurs et événements déclenchés sur les utilisateurs 'expirés'.