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

Messages postés
3
Date d'inscription
jeudi 15 avril 2004
Dernière intervention
11 octobre 2006
- - Dernière réponse : raks13
Messages postés
2
Date d'inscription
mardi 30 janvier 2007
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
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
3
Date d'inscription
jeudi 15 avril 2004
Dernière intervention
11 octobre 2006
3
Merci
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

Merci fractalis 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de fractalis
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
3
Merci
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   

Merci cs_bultez 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_bultez
Messages postés
3
Date d'inscription
jeudi 15 avril 2004
Dernière intervention
11 octobre 2006
3
Merci
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

Merci fractalis 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de fractalis
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
0
Merci
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   
Commenter la réponse de cs_bultez
Messages postés
224
Date d'inscription
lundi 19 décembre 2005
Dernière intervention
6 juin 2007
0
Merci
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--
Commenter la réponse de rubiks10
Messages postés
1
Date d'inscription
dimanche 19 novembre 2006
Dernière intervention
19 novembre 2006
0
Merci
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
Commenter la réponse de Ram7
Messages postés
12
Date d'inscription
samedi 28 février 2004
Dernière intervention
12 novembre 2009
0
Merci
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
Commenter la réponse de baborge77
Messages postés
2
Date d'inscription
mardi 30 janvier 2007
Dernière intervention
9 juin 2011
0
Merci
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
Commenter la réponse de raks13

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.