2010-10-15 5 views
2

HIsur l'événement de déchargement du navigateur

Je veux séance délai d'attente de la page client, je l'ai essayé ci-dessous le code, mais pas en mesure d'exécuter du code besoin d'aide de la façon dont je peux gérer OK ou Annuler les événements de l'utilisateur

<script> 

function onBeforeUnloadAction(){ 

    return "Would u like to discard Changes"; 

} 

window.onbeforeunload = function(){ 
    if((window.event.clientX<0) || 
     (window.event.clientY<0)) 
{ 
    return onBeforeUnloadAction(); 

    } 
} 

</script> 
+0

Avez-vous besoin de plus pour travailler avec ... une page publique est-elle disponible? – Ben

Répondre

1

onbeforeunload doit renvoyer une chaîne, le navigateur crée la boîte de confirmation à partir de cette chaîne. Si vous voulez capturer que l'utilisateur n'a pas laissé (Vous ne pouvez pas exécuter quoi que ce soit si l'utilisateur a quitté, c'est juste la façon dont il est), il suffit de régler une minuterie et voir si elle se déclenche:

window.onbeforeunload = function(){ 
    setTimeout(function(){ 
     //User didnt leave 
     goDoFunStuff(); 
    },500); 
    return 'wanna go?' 
} 

Depuis onbeforeunload bloque le temporisateur ne se déclenchera que si l'utilisateur n'a pas quitté

2

Le beforeunload event ne peut être utilisé que pour afficher une boîte de dialogue indiquant à l'utilisateur qu'il est sur le point de quitter la page en cours. Cette boîte de dialogue est contrôlée par le navigateur et vous pouvez seulement personnaliser l'avertissement de la boîte de dialogue, pas son résultat. Par conséquent, vous ne pouvez pas exécuter une action basée sur le résultat de la boîte de dialogue. Ceci est principalement pour des raisons de sécurité, pour empêcher les gens d'être forcés de rester sur la page en cours.

Si vous souhaitez le nettoyage des données de session après que la personne quitte la page en cours, vous devriez envisager d'utiliser un (ou plusieurs) de ces constructions alternatives:

  1. Inplement votre « retour » ou « annuler » bouton sur votre page, que vous pouvez gérer pour afficher votre propre boîte de dialogue et effectuer le nettoyage.
  2. Consigner les demandes du serveur par session et effectuer un nettoyage sur les sessions qui n'ont fait aucune demande dans un intervalle spécifique.
  3. Effectuez un nettoyage quotidien des anciennes sessions, de préférence à un temps de visite réduit.
Questions connexes