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 :

Différence entre js IE et js FF ???


Sujet :

JavaScript

  1. #1
    Membre chevronné

    Inscrit en
    Octobre 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 363
    Par défaut Différence entre js IE et js FF ???


    J'ai un petit soucis, j'ai voulu me faire la main avec le XMLHttpRequest et j'ai développé un matin un pti jeu (qui ne nécéssite absolument pas cette fonctionnalité js).

    C'est un pierre feuille ciseaux tout bète. Il fonctionne comme ceci : trois images, lors d'un clic j'envoi la valeur de l'image à un traitement php qui me retourne le nom et je remplis un champ avec.

    Ensuite je lance un traitement php pour choisir aletoirement entre les trois possibilités, le serveur me retourne le résultat et je remplis un autre champ avec cette valeur.

    Après cela je lance le traitement serveur qui me renvoi le resultat de la confrontation entre le deux valeur avec une explication littérale du résultat.

    Sous Firefox pas de problème, le système fonctionne à merveille !!

    Sous IE par contre... lors du clic sur l'image pierre je fais match nul, feuille je gagne et ciseaux je perds.

    Donc je ne comprends pas... le traitement qui choisi aleatoirement une valeur dépend du serveur donc le navigateur importe peu... le problème doit se situer dans le traitement js mais où... (ou est charlie? )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    <script language="javascript">
       	   var xhr_object = null;
       	   var playerscr = 0;
       	   var randomscr = 0;
       	   var scrmax = 20;
     
             if(window.XMLHttpRequest) // Firefox 
                xhr_object = new XMLHttpRequest(); 
             	else if(window.ActiveXObject) // Internet Explorer 
             	   xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
             	else { // XMLHttpRequest non supporté par le navigateur 
             	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
             	}
     
             function playerchoice(val){
             	xhr_object.open("GET", "playerchoice.php?val="+val, false); 
             	xhr_object.send(null); 
             	if(xhr_object.readyState == 4) {
             	   document.forms['frm'].player.value = xhr_object.responseText;
             	   return xhr_object.responseText;
                }
             }
     
             function randomchoice(){
             	xhr_object.open("GET", "randomchoice.php", false); 
             	xhr_object.send(null); 
             	if(xhr_object.readyState == 4) {
             	   document.forms['frm'].random.value = xhr_object.responseText;
             	   return xhr_object.responseText;
                }
             }
     
             function fight(player, random){
                xhr_object.open("GET", "fight.php?player="+player+"&random="+random, false); 
             	xhr_object.send(null); 
             	if(xhr_object.readyState == 4) {
             	   return xhr_object.responseText;
                }
             }
     
             function score(player, random){
                xhr_object.open("GET", "score.php?player="+player+"&random="+random, false); 
             	xhr_object.send(null); 
             	if(xhr_object.readyState == 4) {
             	   return xhr_object.responseText;
                }
             }
     
          	function chifoumi(val){
               document.forms['frm'].result.style.backgroundColor = '';
          	   document.forms['frm'].result.value = '';
          	   document.forms['frm'].player.value = '';
          	   document.forms['frm'].random.value = '';
                var player = playerchoice(val);
                var random = randomchoice();
                var result = fight(player, random);
                var point = score(player, random);
                //alert(result);
                document.forms['frm'].result.value = result;
                if( point == 'player') {
                   playerscr = playerscr + 1;
                   document.forms['frm'].playerscr.value = playerscr;
                   document.forms['frm'].result.style.backgroundColor = '#7f7';
                }else if( point == 'random') {
                   randomscr = randomscr + 1;
                   document.forms['frm'].randomscr.value = randomscr;
                   document.forms['frm'].result.style.backgroundColor = '#f77';
                }
          	   if( playerscr == scrmax) {
          	      alert('Félicitations vous avez gagné !!');
          	      resetscr();
          	   } else if( randomscr == scrmax) {
          	      alert('Vous avez complètement perdu...');
          	      resetscr();
          	   }
             }
     
             function resetscr() {
          	   playerscr = 0;
          	   randomscr = 0;
                document.forms['frm'].playerscr.value = playerscr;
          	   document.forms['frm'].randomscr.value = randomscr;
                document.forms['frm'].result.style.backgroundColor = '';
          	   document.forms['frm'].result.value = '';
          	   document.forms['frm'].player.value = '';
          	   document.forms['frm'].random.value = '';
             }
    	</script>
    Il doit y avoir une erreur dans mon code où firefox passe au travers mais pas IE...

    ps : rendez-vous compte vous même du résultat : SHI-FU-MI

  2. #2
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Essaye eventuellement cette méthode pour définir ton objet (reprise de Google Suggest):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    function getXMLHTTP(){
      var A=null;
      try{
        A=new ActiveXObject("Msxml2.XMLHTTP")
      }catch(e){
        try{
          A=new ActiveXObject("Microsoft.XMLHTTP")
        } catch(oc){
          A=null
        }
      }
      if(!A && typeof XMLHttpRequest != "undefined") {
        A=new XMLHttpRequest()
      }
      return A
    }
    A part ça, je ne vois pas ce qui peut ne pas aller. Sur le fond de la chose, c'est nul d'utiliser les XmlHttpRequest en mode synchrone (troisième argument de open à false), l'exercice serait bien plus intéressant en mode asynchrone: c'est la la principale qualité de XmlHttpRequest. En mode synchrone, tu peux recharger la page.... (même si ça prends plus de bande passante, on s'en fout)

    Sinon, pour ta page, qu'est ce que tu lui as fait à mon antivirus:
    La solution matérielle-logicielle WebShield® troll signale l'échec de la connexion à l'hôte distant

    Nom de l'hôte : 212.27.40.149

  3. #3
    Membre chevronné

    Inscrit en
    Octobre 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 363
    Par défaut
    Vachte je savais pas que je faisait un tel effet aux antivirus moi

    je vais me plonger plus dans synchrone/asynchrone pour comprendre la différence et le fonctionnement de chacun.

    et j'ai pas reussi a mettre ta fonction dans ma page :s elle me fait sauter ma fonction pricinpale :s

  4. #4
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par 10-nice
    et j'ai pas reussi a mettre ta fonction dans ma page :s elle me fait sauter ma fonction pricinpale :s
    Il faut mettre la fonction, puis l'utiliser pour instancier l'objet XmlHttpRequest que tu vas utiliser, comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xhr_object = getXMLHTTP();
    A mettre à la place du bloc
    if(window.XMLHttpRequest) // Firefox
    xhr_object = new XMLHttpRequest();
    else if(window.ActiveXObject) // Internet Explorer
    xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    else { // XMLHttpRequest non supporté par le navigateur
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    }

  5. #5
    Membre chevronné

    Inscrit en
    Octobre 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 363
    Par défaut
    C'est ce que j'ai fait :s et ma console js me dit "chifumi is not defined" :s

  6. #6
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par 10-nice
    C'est ce que j'ai fait :s et ma console js me dit "chifumi is not defined" :s
    En même temps, dans ton code ci-dessus, ta méthode s'appelle chifoumi... Et je vois pas vraiment ce que la déclaration ci-desus vient faire dans ta méthode, a part eventuellement une cascade d'erreurs.

    Qu'en dit la console FF?

  7. #7
    Membre chevronné

    Inscrit en
    Octobre 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 363
    Par défaut
    C'est la console javascript FF qui me dit ca

  8. #8
    Nouveau candidat au Club
    Inscrit en
    Mai 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 2
    Par défaut
    Bonjour.

    J'utilise XmlHttpRequest, et je n'ai jamais réussi à récupérer le contenu par RETURN.

    La raison à celà, outre l'aspect synchrone/asynchrone, c'est que la réponse ne viens pas de suite.
    Donc, on utilise une fonction chargée de traiter la réponse quand elle arrivera :

    donc on fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    xhr_object.onreadystatechange=function() 
    {
    if (xhr_object.readyState==4) 
    {
    target.innerHTML = xhr_object.responseText;
    }
    }
    avec target, un noeud dom.

Discussions similaires

  1. Différence entre un "bidouilleur" et un Pro ?
    Par christ_mallet dans le forum Débats sur le développement - Le Best Of
    Réponses: 290
    Dernier message: 28/11/2011, 10h53
  2. Réponses: 5
    Dernier message: 11/12/2002, 12h31
  3. Différence entre TCP, UDP, ICMP
    Par GliGli dans le forum Développement
    Réponses: 1
    Dernier message: 13/09/2002, 08h25
  4. Différences entre jmp, jz, jnz, etc
    Par christbilale dans le forum Assembleur
    Réponses: 3
    Dernier message: 05/07/2002, 15h09
  5. Réponses: 3
    Dernier message: 07/05/2002, 16h06

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