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 :

[AJAX] Bug onbeforeunload dans IE


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut [AJAX] Bug onbeforeunload dans IE
    Bonjour,

    Je me sers de Ajax pour faire fonctionner un chat. La page du chat fait appel a 2 fonctions, l'une qui affiche les messages, et l'autre qui deconnecte l'utilisateur.
    Pour cette deuxième fonction, j'utilise onbeforeunload, ce qui va déconnecter l'utilisateur et mettre a jour la liste des connectés. Tout fonctionnait parfaitement bien, jusqu'a ce que j'introduise dans le script PHP qui gere les connexions, UNLINK pour effacer les fichiers lorsque le dernier utilisateur quitte le chat.

    Le problème que je rencontre à présent est le suivant. Lorsque l'utilisateur envoit un message, l'évenement onbeforeunload se déclenche et détruit les fichiers du chat, ce qui efface tous les messages et la liste des connectés. Cela ne devrait absolument pas se produire, puisque la page ne se recharge pas, et que les deux fonctions n'ont rien avoir l'une avec l'autre.

    Celle des messages est appelée grace à un formulaire classique, et celle qui gere les connexions grace a body onbeforeunload().

    Cela fait 4 jours que je cherche une solution j'ai essayé plein de trucs rien ne marche. J'ai un peu progressé dernièrement et maintenant j'arrive a taper un message sans que onbeforeunload se lance, mais des que je tape un second message onbeforeunload se déclenche.

    <script type="text/javascript">
    window.onbeforeunload = confirmExit;

    funtion confirmExit(){
    var evt = window.Event;
    if(evt){
    window.onbeforeunload = function(evt){
    return closeChat(evt);
    }
    }
    else{
    window.onbeforeunload = function(){
    return closeChat(evt);
    }
    }

    function closeChat(){
    //appel du script deco.php
    }
    }

    function displayMessages(){
    //appel du script qui enregistre les messages
    }
    </script>

    <body onbeforeunload="closeChat()">

    <form action="javascript:displayMessages()" method="post" name="mess">
    <input type="image" src="images/envoi.gif" name="mess"></form>

    Merci pour vôtre aide.

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Javascript est sensible à la casse...

    ==> window.event
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Merci pour ta réponse. Oui je sais mais si je ne l'ecris pas comme ça, cela ne détecte pas la fermeture du navigateur.

    J'ai à moitié résolu le problème, mais maintenant j'ai onbeforeunload qui ne fonctionne plus. Le code suivant détecte la fermeture du navigateur par l'utilisateur.

    <script type="text/javascript">
    var evt = window.Event;
    if(evt){
    window.onbeforeunload = function(evt){
    return closeChat(evt);
    }}
    else{
    window.onbeforeunload = function(){
    return closeChat(evt);
    }}
    </script>

    <body onbeforeunload="closeChat()">

    Cela marchait super bien en local avec easyPHP, mais maintenant que je teste chez mon hébergeur sur mon site, onbeforeunload ne marche plus.
    Quelqu'un pourrait m'aider et me donner une explication ?
    Merci beaucoup.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    C'est bon c'est résolu. J'avais fais une erreur de variable dans le script PHP qui est appelé par xmlhttprequest. Merci.

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

Discussions similaires

  1. [AJAX] bug ajax ou erreur dans mon code?
    Par tapoutapou dans le forum AJAX
    Réponses: 2
    Dernier message: 06/08/2010, 21h19
  2. [Ajax] Bug introuvable
    Par Davboc dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 09/02/2006, 11h09
  3. bug Post dans un ADOQuery après un InsertRecord
    Par joebarthib dans le forum Bases de données
    Réponses: 6
    Dernier message: 16/02/2005, 16h54

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