2009-05-06 1 views
3

J'ai regardé quelques threads ici, principalement utilisé ceci: window.onbeforeunload = fonction (e) { var e = e || window.event;Y at-il un moyen de détecter la fermeture de la page par javascript?

// IE & Firefox if (e) { e.returnValue = 'Etes-vous sûr?'; }

// Pour Safari retour 'Are you sure?'; };

mais semble que cela va mélanger la situation de rafraîchissement de la page et fermer la page, est-il une possibilité de distinguer ces deux situations?

Répondre

2

Il n'y a pas vraiment moyen de différencier les deux événements différents en Javascript. Vous pouvez utiliser l'approche GMail et utiliser AJAX pour tout, afin de ne jamais provoquer un rechargement de page. Cela signifie que le seul moment où "OnBeforeUnload" est appelé est lorsque l'utilisation quitte réellement la page. L'alternative est de mettre JS sur tous vos liens pour désactiver le script OnBeforeUnload lorsqu'ils cliquent sur un lien, mais vous ne voulez que le feu quand le navigateur se ferme réellement.

En ce qui concerne le navigateur, il n'y a pas de différence entre l'utilisateur qui clique sur un lien pour quitter votre page et le bouton de fermeture du navigateur.

3
function OnUnLoad() 
{ 
    if (window.event.clientY < 0 && window.event.clientX < 0) 
    { 
     //cleanup code goes here... 
    }  
} 

Cela semble fonctionner pour moi sur tous les navigateurs. Mais la fermeture des onglets semble causer des problèmes. En fait, il n'y a pas de façon "documentée" de le faire.