Récupérer l'évènement après un onbeforeunload

Résolu
fractalis Messages postés 3 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 11 octobre 2006 - 9 oct. 2006 à 18:39
raks13 Messages postés 2 Date d'inscription mardi 30 janvier 2007 Statut Membre Dernière intervention 9 juin 2011 - 9 juin 2011 à 13:08
Bonjour,

Je voudrais savoir comment récupérer l'évènement après un onbeforeunload, et avant le onunload de la page.
Voici mon script :
<script language="JavaScript" event="onbeforeunload()" for="window">
event.returnValue = "Des données peuvent être en cours de saisie...";
</script>
Ce script permet donc d'afficher une boîte de dialogue lorsqu'on ferme le navigateur, celle-ci comprenant deux boutons : OK et Annuler. Un clic sur OK ferme le navigateur et un clic sur Annuler le laisse ouvert.
Le problème est que je voudrais effectuer des actions spécifiques lors du clic sur chacun de ces boutons, mais je ne trouve pas comment.
Quelqu'un aurait-il déjà rencontré ce problème et réussi à le résoudre ? Merci de votre réponse.

fractalis

8 réponses

fractalis Messages postés 3 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 11 octobre 2006
11 oct. 2006 à 17:03
Merci pour la réponse.
Effectivement le message je l'ai en utilisant cette méthode.
Cependant, je ne peux toujours pas effectuer une action en cliquant sur OK que je ne veux pas faire en cliquant sur Annuler.
Je ne peux pas non plus effectuer cette modification sur l'évènement onunload car l'action que je désire effectuer s'effectue dans la fenêtre qui est fermée au moment du onunload.
Le but est en fait d'enregistrer la date et l'heure de déconnexion d'un internaute si ce dernier ferme l'explorer brutalement par Alt-F4 ou par la croix sans cliquer sur un quelconque bouton de déconnexion. Mon site est fait en ASP.
Je serais ravi si quelqu'un a une idée sur ce gros problème.

fractalis
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 oct. 2006 à 18:15
souvent on détermine qu'un visiteur est "parti",
   quand il n'y a plus d'actions de sa part depuis un certain temps.
je ne pense pas qu'on puisse faire beaucoup d'autres choses.
peut-être me trompe-je : jamais vu d'autre solution,
en javascript "pur" ( hors ActiveX par exemple ) mais je
n'ai pas vu grand chose non plus.
<hr />
            Cordialement    Bul   
3
fractalis Messages postés 3 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 11 octobre 2006
11 oct. 2006 à 19:59
Ok merci bien, mais je pense que faire tourner un batch pour déconnecter un user serait trop lourd en terme de ressources serveur.
Effectivement, je pense creuser du côté ActiveX.
Si quelqu'un a un truc pour me faire avancer, je suis preneur.

fractalis
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 oct. 2006 à 14:41
Bonjour,

   je ne pense pas qu'on puisse gérer "cela comme ça"

   tout ce que j'ai réussi à faire : onbeforeunload="fnct(); return false;"
         qui affiche un message pour confirmer ou pas la fermeture de la page.

   dans fnct, je ne pense pas qu'il soit possible de ne pas fermer.
   on peut fermer "automatiquement" oui :  sans mettre le return false;
         peut-on faire plus/mieux ?

   mais peut-être me trompe-je ?

<hr />
            Cordialement    Bul   
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rubiks10 Messages postés 224 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 6 juin 2007 3
12 oct. 2006 à 00:57
Salut

Ben en fait je ne pense pas que tu puisses avoir une boite de dialogue lors d'une sortie brutale ( en tuant le processus par son pid  ou par un clic sur la croix du navigateur ) mais par contre c'est faisable d'intercepter le ALT+F4 et donc d'effectuer une demande

Et aussi pour ton histoire d'ecriture d'heure de déconnexion si je comprend bien tu voudrais ecrire l'heure soit dans une base soit dans un fichier externe. Et si c'est ce que tu veux faire c'est largement faisable en lançant une requete AJAX lors de l'evenement onUnload qui ecrira soit dans ta base soit dans un fichier l'heure courante. Cependant le probleme de l'evenement onUnload c'est que meme si on se déconnecte pas mais que l'on fait un rafraichissement ( par exemple F5 ) cela lance l'evenement quand meme et c'est la meme chose si un lien te redirige vers une autre page de ton site....

Donc cet evenement ne s'avere pas t'être très utile ... mais bon tu peux très bien enregistrer a chaque fois l'heure et lorsque l'utilisateur se déconnectera vraiment ben l'heure sera quand meme la bonne.

voila
bonne prog

--The Rubik's Man--
0
Ram7 Messages postés 1 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 19 novembre 2006
19 nov. 2006 à 18:26
J'ai fait un jeu en ligne et je voudrai que si un joueur quitte, j'enregistre dans la BD son absence. A tu trouvé ?

Ram7
0
baborge77 Messages postés 12 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 12 novembre 2009
16 nov. 2007 à 18:40
Bonjour à toutes et tous

de mon cote, j'ai ecris cela comme ça:

dans le head:


<hr />


<script language="javascript">
window.onbeforeunload = fermer;
    function fermer(){
        vfichier = document.f_choix.fichier.value;
        plan2("suppcourrier.php?LFichierCourrier="+vfichier);
    }
</script>


<sub>
<hr />


</sub>
Dans la fonction fermer()

je récupère le nom d'un courrier créer sur ma page et l'envoi sur une autre page pour le supprimer.

Par contre pas de validation demandée, sauf si vous les gérez sur la page appeller

<hr /><hr />
sur une autre page:
window.onbeforeunload = fermer;
function fermer(){
    vformulaire = document.f_choix.f_form.value;
    old_TR = document.f_choix.f_TR.value;
    if (vformulaire != 0){
        vNP = document.forms[vformulaire].NP.value;
        vNV = document.forms[vformulaire].NV.value;
        vCR = document.forms[vformulaire].CR.checked;
        vNC = document.forms[vformulaire].NC.value;
        if (vNP != "NP" | vNV != "NV" | vNC != "" | vCR == "true"){
            SetColor(document.getElementById( old_TR ), "RED");
            document.forms[old_form].NP.focus();
            mess = "Vous n'avez pas enregistrer....\n Si vous fermez cette fenetre, \nvous perdrez les informations non sauvegarder..."
            return mess;
           }
        }
    }
<hr />
Lors de la saisie du formulaire je modifie des valeurs dans des input hidden
en validant le formulaire, je les rétablis, sinon lors de la sortie de la page, cela me met un message ...

Je ne sais pas si c'est ce que tu cherchais
mais cela peut peut etre te mettre sur la voie....

@+ laurent
0
raks13 Messages postés 2 Date d'inscription mardi 30 janvier 2007 Statut Membre Dernière intervention 9 juin 2011
9 juin 2011 à 13:08
Bonjour,

Désolé de remonter un si vieux message mais je me retrouve dans la même situation que fractalis, j'ai donc le code suivant:
<script type="text/javascript">
function closeIt()
{
return " ";
}
window.onbeforeunload = closeIt;

</script>

Si l'utilisateur clique sur OK, j'aimerais exécuter une fonction supplémentaire. Le code aurait-il évolué depuis, quelqu'un connait-il une solution?

Merci
0
Rejoignez-nous