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 :

Moment d'affichage avec IE


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Par défaut Moment d'affichage avec IE
    Bonjour

    J'ai un soucis avec mon script et internet explorer. J'ai créé un jeu de carte permetant de faire un mot et le moment de l'affichage n'est pas celui que je souhaite sur IE alors que je n'ai pas de soucis avec FF ou Opera.

    Voici un exemple d'étape réalisé sous Firefox ou Opéra
    - l'utilisateur clique sur le bouton valider pour valider un mot
    - Le javascript récupère le mot et demande une vérification de son existence au serveur (AJAX)
    - Si le mot est bon, normalement, le nombre de points est augmenté du nombre de points gagné avec ce mot et le mot formé est placé dans un textarea avec le nombre de point qu'il a rapporté.
    - L'intelligence artificiel cherche un mot et si elle en trouve affiche les images correspondante sur la table
    - Attente de 3 secondes pour voir les lettres et les images puis les images sont remplacé et les points et le mot sont placé dans la comptabilisation de points total et dans le textarea de l'IA.

    Ce déroulement est le déroulement normal du jeu. Avec Internet explorer, le résultat final est le même mis à part que les points et les mots dans le textarea sont placé exactement en même temps. Du coup, on ne voit même pas les cartes utilisé par l'IA.
    L'utilisateur ne peux pas rester sans aucun affichage pendant l'excution totale de ce script. Es ce qu'il n'y aurait pas de solution pour forcer l'affichage avant la fin de l'exécution ?

  2. #2
    Membre confirmé
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Par défaut
    Es ce que quelqu'un pourrait m'aider ?
    S'il vous manque des informations je peux aussi vous les fournir.

  3. #3
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour,

    Le code javascript nous serait utile, on a pas de boule de cristal

  4. #4
    Membre confirmé
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Par défaut
    Le problème est que je ne peux pas tout mettre.... ça ferais beaucoup ...

    Il existe plusieurs action que l'utilisateur peut faire :
    - défausser
    - passer son tour
    - faire un mot
    - recommencer (ne nous intéresse pas du tout ici, ça recharge juste la page)

    Le problème d'affichage se fait quelques soit l'action faite par l'utilisateur donc je vais vous donner l'exemple lorsque l'utilisateur passe son tour :

    Dans mon fichier game.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p><input type="submit" value="Passer" onclick="castor();return false;"/></p>
    Lorsque l'utilisateur clique sur le bouton passer, la fonction castor() qui permet de faire jouer l'intelligence artificiel est exécutée.

    castor() dans game.js :
    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
    // Le castor joue
    function castor(){
     
    	//alert(contenupioche.length); // Message de debug pour savoir combien de carte il reste dans la pioche
     
    	// si la partie est terminé, castor ne peux pas jouer
    	if (!partietermine){ // Variable global
     
    		// Déclaration de varaible
    		var jouer=false; // Le castor n'a pas encore joué
    		var i; // Pour parcourir la main de castor
    		var j; //pour tester les éléments qui compose le nom de la carte
     
     
    		// On essaye de faire un mot
    		jouer=cherchemot(); // renvoie true si un mot a été trouvé false sinon
     
    		// S'il n'a pas fait de mot et qu'il n'a pas tenté de défausser, il défausse si possible
    		if (!jouer){
    			jouer=defaussecastor(); // renvoie true si la défausse a réussi, nfalse sinon.
    		}
     
     
    		// S'il a joué, il pioche
    		if (jouer){
    			piochecastor();
    		}
    		// S'il n'a pas jouer, il prévient l'utilisateur
    		else{
    			alert("Le castor n'a pas trouvé de mot et ne peut pas défausser.");
    		}
    	} else {
    		alert("La partie est terminé, vous ne pouvez pas laisser Castor jouer.");
    	}
    }
    Le script exécute ensuite cherchemot() de game.js :
    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
    89
    90
    91
    92
    function cherchemot(){
     
    	// Liste des lettres
    	var i; // parcours la main du castor
    	var elements; // Elements de la carte
    	var tlettre= new Array(); // Liste des lettres de la main du castor
    	for (i=1;i<=7;i++){
    		if (maincastor[i]==""){ // Variable global
    			tlettre[i]=""; // Il n'a pas de carte ici
    		} else{
    			elements=maincastor[i].split("-"); // On récupère les élements qui compose le nom de la carte
    			if (elements[2]=="joker"){ // On vérifie si la carte est un joker
    				tlettre[i]="_"; // si la carte est un joker la lettre est _ pour remplacer n'importe quel lettre dans la recherche du mot dans la BD
    			}else{
    				tlettre[i] = elements[2]; // Si la carte n'est pas un joker on prend la lettre de la carte 
    			}
    			//alert(tlettre[i]); // Debug pour savoir quell lettre castor a dans la main
    		}
    	}	
     
    	// Recherche du mot coté serveur
    	callScript("verifexiste.php","castor=true&a=" + tlettre[1] +"&b=" + tlettre[2] +"&c=" + tlettre[3] +"&d=" + tlettre[4] +"&e=" + tlettre[5] + "&f=" + tlettre[6] + "&g=" + tlettre[7]); // Envoie une requete au serveur avec AJAX
    	if (motcastor!=""){ // variable global dont la valeur a été changé sur le serveur
    		motexiste=true;
    	}
     
    	// si on trouve un mot
    	if (motexiste){
    		var mottrouve=new Array();
    		var j; // parcours les lettres du mot
    		var lettretrouve; // permet de savoir si on a trouvé la lettre ou pas
    		var placecarte; // Emplacement de la carte
    		var placelettre; // emplacement de la lettre de la carte
    		// On parcours chaque lettre du mot
    		for (j=0;j<motcastor.length;j++){ 
    			i=1;
    			lettretrouve=false; // on concidere que la lettre n'a pas été trouvé
    			while ((i<=7)&&(lettretrouve==false)){ // On parcours la main du castor
    				// Si on trouve la lettre
    				if (tlettre[i].toUpperCase()==motcastor[j].toUpperCase()){
    					// on place la carte sur la table
    					placecarte="choisicastor"+(j+1); // id de l'emplacement
    					//alert("Nom de la carte : " + maincastor[i]); // debug
    					document.getElementById(placecarte).title=maincastor[i]; // on chage le titre de l'emplacement
    					document.getElementById(placecarte).src="images/cartes/" + maincastor[i] + ".jpg"; // On change la source de l'image de l'emplacement
    					// On place la lettre
    					placelettre="lettrechoisicastor"+(j+1); // id de l'emplacement
    					document.getElementById(placelettre).value=motcastor[j].toUpperCase(); // On place la valeur de la lettre dans le formulaire
    					// On replace les variables
    					lettretrouve=true; // On a trouvé la lettre
    					maincastor[i]=""; // Il n'y a plus de carte à cette emplacement de la main
    					tlettre[i]=""; // cette lettre a été utilisé
    				}
    				i=i+1; // Lettre suivante
    			}
     
    			// si on a pas trouvé la carte, la lettre est un joker
    			if (!lettretrouve){
    				i=1;
    				while ((i<=7)&&(lettretrouve==false)){
    					if (tlettre[i]=="_"){
    						// on place la carte
    						placecarte="choisicastor"+(j+1); // id de l'emplacement de la carte
    						document.getElementById(placecarte).title=maincastor[i];
    						document.getElementById(placecarte).src="images/cartes/" + maincastor[i] + ".jpg"; // On change la source de l'image de l'emplacement
    						// On place la lettre
    						placelettre="lettrechoisicastor"+(j+1);
    						document.getElementById(placelettre).value=motcastor[j].toUpperCase(); // On place la valeur de la lettre dans le formulaire
    						// On replace les variables
    						lettretrouve=true;
    						maincastor[i]="";
    						tlettre[i]="";
    					}
    					i=i+1
    				}
    			}	
    		}
     
    		// Attente de 3 secondes pour que l'utilisateur puisse voir les cartes joué par le castor
    		callScript("sleep.php","arret=3"); // sleep() n'existant pas en javascript, l'attente se fait coté serveur
     
    		// Compte les points
    		validemotcastor();
     
    		motcastor=""; // Le mot trouvé par le castor est de nouveau vide
    		motexiste=false; // le castor n'a plus de mot jusqu'au prochain tour
    		return true; // Un mot a été trouvé donc on retourne true.
    	}
    	// Si on ne trouve pas de mot on return false
    	return false;
     
    }
    Je ne pense pas que ma fonction callscript ainsi que ce qu'il se passe coté serveur soit utile vu que le problème se pose aussi quand castor défausse et donc qu'il ne passe pas par le serveur.

    validemotcastor() de game.js :
    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
    // Valide un mot
    function validemotcastor(){
    	// trouver le premier emplacement vide
    	var videtable=trouvervide("choisicastor"); // trouve le premier remplacement vide soit l'emplacement qui suit la dernière carte
     
    	// On récupère le mot
    	var mot="";
    	var videtableb=videtable;
    	var idcarte;
    	var idlettre;
    	var points=0; // points du mot
    	var cartetable; // nom de la carte sur la table
    	var elements; // element qui compose le nom de la carte
    	var bonus=2; // bonus si on vide la main (point multiplié par bonus)
    	// si castor a trouvé un mot de la taille maximum
    	if (videtable==-1){
    		videtableb=8; // nombre de carte maximum +1
    	}
    	// on parcours la table
    	for(i=1;i<videtableb;i++){
    		idcarte="choisicastor" + i ; //emplacement de la carte (image)
    		idlettre= "lettre" + idcarte; // emplacement de la lettre
     
    		// On ajoute une lettre au mot
    		mot = mot + document.getElementById(idlettre).value;
     
    		// On rajoute les points de la carte
    		cartetable=document.getElementById(idcarte).title; // nom de la carte
    		elements=cartetable.split("-"); // élement qui compose le nom de la carte
    		if (parseInt(elements[1],10)<=10){ // si la carte n'est pas un joker
    			//alert (parseInt(elements[1]));
    			points=points + parseInt(elements[1],10); // on rajoute les points de la carte
    		}
     
    		// on rajoute le bonus s'il a trouvé un mot avec toute les lettres de la main
    		if (i==7){
    			points=points * bonus;
    		}
     
    		// On supprime la lettre
    		document.getElementById(idlettre).value="";
    		document.getElementById(idlettre).readOnly=true; // on s'assure que readonly est bien a true (ce qui n'est pas le cas quand la lettre était un joker)
     
    		// On supprime la carte
    		document.getElementById(idcarte).src="images/cartes/vide.jpg";
    		document.getElementById(idcarte).title="vide";
    	}
     
    	// On place dans la comptabilisation des points
    	document.getElementById('pointsducastor').value = parseInt(document.getElementById('pointsducastor').value,10) + points;
    	document.getElementById ('motsducastor').value = document.getElementById ('motsducastor').value + mot + " : " + points + "\r\n";
     
    }
    Un autre problème est apparue avec IE qu'il n'y a pas avec ff, la page se met à recharger de temps en temps tout en laissant le problème persister...

    J'espère que c'est informations vous suffiront ... mon code game.php suit le xHTML.

  5. #5
    Membre confirmé
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Par défaut
    Petit test que je viens de faire :
    dans ma fonction castor(), j'ai rajouté un message d'alert.

    J'ai d'abord mis la ligne :
    en commentaire avec l'alert situé juste apres.

    La page ne se recharge pas donc le problème de rechargement vient de la fonction cherchemot() de plus les affichage qui doivent se faire avant le message alert ce font à ce moment la et n'attende pas la fin du script. je ne peux pas voir si le problème d'affichage est correcte dans le sens que l'exécution de la fonction est instantané ici.

    J'ai donc essayé de mettre mon message alert avant la fonction cherchemot() sans que celle ci soit en commentaire. La page recommence à ce recharger mais l'affichage de ce que l'utilisateur joue se fait en même temps que mon alert puis la page recharge une fois le message validé.

  6. #6
    Membre confirmé
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Par défaut
    J'ai résolu un de mes deux problèmes, le fait que la page recharge. dans ma fonction cherchermot() j'utilisais motcastor[j] pour acceder à la lettre en position i du mot motcastor mais si ceci fonctionne sous firefox, cela n'est pas le cas sur internet explorer j'ai donc dut le remplacer par motcastor.charAt(j)

    Mais le problème persiste, l'affichage se fait toujours quand l'utilisateur reprend la soit à la fin du tour de l'intelligence artificiel soit lors de l'affichage d'un message alert.

    Peut être existerait il alors un moyen de simuler l'intervention de l'utilisateur sans pour autant que celui ci est à faire quoi que ce soit ?

Discussions similaires

  1. problème d'affichage avec printf
    Par sorari dans le forum C++
    Réponses: 12
    Dernier message: 08/03/2005, 18h30
  2. Réponses: 6
    Dernier message: 19/10/2004, 13h46
  3. Resolution d'affichage avec x11
    Par cosmos38240 dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 06/06/2004, 23h26
  4. Pb affichage avec un PaintBox (pour eviter scintillement)
    Par juan64 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/04/2004, 09h21
  5. Problème d'affichage avec trace
    Par WriteLN dans le forum Flash
    Réponses: 10
    Dernier message: 22/10/2003, 16h59

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