IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Utiliser onUnload juste pour detecter fermeture navigateur


Sujet :

JavaScript

  1. #1
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut Utiliser onUnload juste pour detecter fermeture navigateur
    Bonjour!

    Titre explicite.
    Je veux utiliser onUnload ou un autre système éventuellement permettant de détecter uniquement la fermeture du navigateur (ou de l'onglet éventuel...).

    J'execute un traitement rapide sur l'évenement onUnload (ajax) qui tue les sessions et mets à jour les heures de déconnexion. Seulement cet événement onUnload s'éxécute aussi sur les rafraichissements de page et redirections.

    Vous connaissez un moyen de détecter UNIQUEMENT la fermeture du navigateur?

    Merci

  2. #2
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut
    résolu!

    J'avais la solution sous les yeux...

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    et ?

  4. #4
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut
    et ben je ne passe pas par un onUnload lol.

    J'utilise déjà un chrono ajax qui met à jour l'heure de "présence" du client (toutes les secondes).
    Donc pour savoir qd le client n'est plus sur le site (que ça soit une fermeture de son navigateur ou un crash de son pc) il suffit que je nettoie toutes les connexion inférieures (par ex) à 20 secondes par rapport à l'heure actuelle.
    Pour ça ok...

    Le soucis que j'avais était pour détecter l'heure de déconnexion du dernier client présent sur le site. En effet si ce dernier se déconnecte et que je n'utilise pas de onUnload...je ne voyais pas comment savoir à quelle heure il s'est déconnecté. Or chuis con...lol...son heure de déconnexion est tout simplement la dernière heure que son chrono à mis à jour dans la base...

    Me reste qu'à faire une ou deux petites mises à jour de la base dans le crontab du serveur web et voilà j'ai un suivi à la seconde près de chaque utilisateurs du site. youpla ridon ridaine.

    tchao

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    tu peux nous en dire un peu plus sur ce chrono ajax ?

    cela parrait intéressant comme astuce

  6. #6
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut
    No pb

    Disons que sur ma page principale (commune à l'ensemble du site) j'ai un chargeur de scripts (qui utilise window.onload) dans lequel je passe un script (JS) qui tourne en boucle toutes les 1 secondes et qui (par ajax) éxécute qlq requêtes de maintenance sur la base de données.

    En l'ocurrence, pour chaque utilisateur connecté (loggués) sur le site, le script qui tourne va mettre à jour la base de données, notamment l'heure POUR CHAQUE USER. Dans ce mm script (php) j'ai une boucle qui contrôle toutes les heures mises à jour de chaque utilisateur. J'ai spécifié que si une heure (d'un client) était inférieure de plus de 20 secondes à l'heure actuelle alors ce dernier n'est plus considéré comme connecté sur le site et je peux éventuellement killer son ID de connexion et le rediriger vers la page de login (mais ça ne me concerne pas).

    Quand un user ferme son navigateur alors la dernière heure que son script à mis a jour dans la base correspond à son heure de déconnexion.
    Donc quand le script va contrôler les heures, il verra qu'une heure n'a pas été mise à jour à temps (20sec) et mettera à jour qlq données spécifiant l'heure de déconnexion du client et 2 ou 3 autres infos.

    Rien de compliqué mais très pratique.

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut

    merci

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Un peux plus sur l'AJAX ? :)
    Bonjour,
    j'ai pensé à la même chose pour le site que je suis en train de réaliser.
    Je suis complétement novice dans tout ce qui touche au javascript, et encore plus en ajax ...

    Peut-tu me précisez quel fonction AJAX tu as utilisé ? Merci d'avance

  9. #9
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut
    Bonjour,
    ce post date de 2007 donc évidemment aujourd'hui on va utiliser autre chose
    Si c'était à refaire, j'utiliserai jQuery (framework js) et ses différentes fonctions utilisant l'objet XHR de Javascript.

    Tu as des infos ici :
    http://api.jquery.com/jQuery.ajax/
    http://api.jquery.com/jQuery.post/

    Il existe d'autres framework JS tels que mootools mais je crois que jQuery le dépasse de peu en réputation / utilisation par les développeurs.

    Good luck

  10. #10
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci de ta réponse.
    J'ai donc regardé la doc en anglais jQuery.ajax() que tu m'as indiqué.

    Donc ce que je souhaite faire est plus simple ( enfin je pense que ce que tu voulais faire .)

    J'ai une page PHP ( maj_co.php ) dans le repertoire classes, qui va faire un UPDATE dans la base de donné de la connexion de l'utilisateur.

    Je souhaite juste lancé la page, sans que ce soit visible pour l'utilisateur, ou que la page soit saccadé.

    Donc j'ai pensé à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function MajCo(){
    	$.ajax('classes/maj_co.php');
    }
    setInterval("MajCo()", 10000);
    Mais bon, comme je le devinai ça ne marche pas. j'essaie de comprendre mais avec la doc en anglais ... je m'en sort pas, merci encore ( Je l'ai mis entre les balise <script></..> de ma page ou je fait l'appel ( principal.php).

  11. #11
    Membre averti Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Points : 439
    Points
    439
    Par défaut
    Voilà une syntaxe qui ira bien (prise sur la doc jquery).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $.ajax({
      url: '/chemin-vers/maj_co.php',
      success: function(data) {
        $('.result').html(data);
        alert('Load was performed.');
      }
    });

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/08/2008, 15h45
  2. aide pour detection du navigateur
    Par oborer dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 28/08/2006, 16h44
  3. Réponses: 36
    Dernier message: 13/05/2004, 18h22
  4. [xsl] xsl juste pour faire copie d'un xml
    Par peppena dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 17/02/2004, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo