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 :

[POO] JS bug sous IE et pas sous FF


Sujet :

JavaScript

  1. #1
    Membre régulier

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Points : 106
    Points
    106
    Par défaut [POO] JS bug sous IE et pas sous FF
    Bonjour à tous, et désolé pour le manque d'originalité du titre ...

    Je suis completement novice en JS, je récupere juste des bouts de code par-ci par la, pour arriver à mes fins.
    d'ailleurs j'ai trouvé 2 fct tres interessantes pour de l'Ajax sur le tuto suivant:
    http://siddh.developpez.com/articles/ajax/

    Ainsi les fct clean et go permettent de nettoyer les noeuds XML pour qu'ils soient convenablement interprété par les navigateurs ...

    Le truc, c'est que ca marche très bien sous FF, mais qu'un bug JS est généré sous IE (vive le débuggage sous IE .... :s)
    et j'en viens a conclure que c'set celle ligne qui plante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaReponse = clean(xhr.responseXML.documentElement);
    avec l'erreur suivante:
    Line: 38
    Character: 5
    Code: 0
    Error Message: 'null' a la valeur Null ou n'est pas un objet.

    Je reposte ci-dessous les fct go & clean utilisées:
    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
    			function go(c){
    				if(!c.data.replace(/\s/g,''))
    					c.parentNode.removeChild(c);
    			}
     
    			function clean(d){
    				var bal=d.getElementsByTagName('*');
     
    				for(i=0;i<bal.length;i++){
    					a=bal[i].previousSibling;
    					if(a && a.nodeType==3)
    						go(a);
    					b=bal[i].nextSibling;
    					if(b && b.nodeType==3)
    						go(b);
    				}
    				return d;
    			}

    Please!! besoin d'aide, je me casse les dents dessus depuis plusieurs jours ...

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    vérifit que ton document xml existe bien au moment ou tu veux le nétoyer

    juste avant fait un alert
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(xhr.responseXML.documentElement);
    tu verras si l'objet existe ou pas

  3. #3
    Membre régulier

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Points : 106
    Points
    106
    Par défaut
    Merci en tout cas de ton aide, et de la rapidité de la réponse, et puis, ...
    Bien vu!!
    en effet le XML n'existe pas (l'alerte me renvoi "null" ) ... j'en déduit donc que c'est la fct getXhr() qui plante ...
    Je l'ai récupéré sur le meme site que mentionné ci-dessus.
    La voici:

    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
    	function getXhr()
    	{
    		var xhr = null; 
    		if(window.XMLHttpRequest) // Firefox et autres
    		{ 
    			xhr = new XMLHttpRequest(); 
    		}
    		else if(window.ActiveXObject) // Internet Explorer 
    		{ 
    		   try 
    		   {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} 
    			catch (e) 
    			{
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		}
    		else // XMLHttpRequest non supporté par le navigateur 
    		{ 
    		   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    		   xhr = false; 
    		} 
    		return xhr;
    	}
    Pourtant le gars sur son tuto avait l'air serein quant a cette fct ... doit ton dorénavant utiliser une autre méthode, ou instancier une autre classe pour créer un objet de type XmlHttpRequest sous IE ??

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    la fonction getXhr() est correcte, l'erreur doit provenir d'ailleurs dans ton code.

  5. #5
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,
    Je pense plutot que c'est le script executé qui ne renvoie pas du XML.

  6. #6
    Membre régulier

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Points : 106
    Points
    106
    Par défaut
    En effet!
    Fort possible aussi que ce soit du XML mal généré ou du moins mal interprété par IE ..

    voici le code php qui génère le XML (en gros en A il va contenir une balise input de nom & prénom, et en B une valeur (un i)) :

    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
    <?php
    //												-=GENERATION CODE XML A PARTIR DU PHP=-
    //															-=INJECTION PHP=-
    	include('scripts/config.php');
    	$link = dbConnect();
    	//$i = $_POST['i'];
    	$i++;
    	$i = $_GET['i'];
    //------------------------------------------CREATION BALISE ZlistDerJou DU # XML------------------------------------------------
    	//Req : toutes les journées de la poule id_pou
    	$query = "SELECT id_lic, nom_lic, pren_lic FROM licencies ORDER BY nom_lic, pren_lic";
    	$result = mysql_query($query);
    	if ($result) 
    	{
    		$nbe_lic = mysql_num_rows($result);
    		$buffer1 = '<table width="100%" align="center">';
    		$buffer1 .= '<tr>';
    			$buffer1 .= '<td width="50%" align="center">';
    		   		$buffer1 .= '<select id="lic_'.$i.'" name="lic_'.$i.'">';
    				$buffer1.= '<option value="" selected>&nbsp;</option>';
       				for ($j=1;$j<=$nbe_lic;$j++)
    				{
    					$tableau = mysql_fetch_array($result);
    					$id_lic = $tableau['id_lic'];
    					$nom_lic = $tableau['nom_lic'];
    					$pren_lic = $tableau['pren_lic'];
    					$buffer1.= '<option value="'.$id_lic.'">'.$nom_lic.' '.$pren_lic.'</option>';
    				};
    				$buffer1 .= '</select>';
    			$buffer1 .= '</td>';
    			$buffer1 .= '<td width="30%" align="center">';
    				$buffer1 .= '<input type="text" name="num_lic_'.$i.'" id="num_lic_'.$i.'" value=""  />';
    			$buffer1 .= '</td>';
    			$buffer1 .= '<td width="10%" align="center">';
    				$buffer1 .= '&nbsp;';
    			$buffer1 .= '</td>';
    		$buffer1 .= '</tr>';
    		$buffer1 .= '</table>';
    	}
    	else
    	{
    		$buffer1 = '-#ERREUR#-';
    	};
     
    //------------------------------------------CREATION # XML -------------------------------------------------------
     
       //$buffer = '';
       $buffer = '<reponse>';
       $buffer .= '<A>';
       $buffer .= '<![CDATA[';
       $buffer .= $buffer1;
       $buffer .= ']]>';
       $buffer .= '</A>';
       $buffer .= '<B>';
       $buffer .= $i;
       $buffer .= '</B>';
       $buffer .= '</reponse>';
     
       header('Content-Type: text/xml');
       echo $buffer;
    ?>
    si qlqc vous parait incohérent n'hésite pas à me le signaler :p !!

  7. #7
    Membre régulier

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Points : 106
    Points
    106
    Par défaut
    Qd j'essai d'afficher la page XML sous FF --> tout est OK

    sous IE, j'ai une erreur ... ca vient bien de la génération de la page XML.
    Voici l'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    La page XML ne peut pas être affichée 
    Impossible d'afficher l'entrée XML en utilisant la feuille de style XSL. Corrigez l'erreur, puis cliquez sur le bouton Actualiser ou réessayez ultérieurement. 
     
     
    --------------------------------------------------------------------------------
     
    Un caractère incorrect a été trouvé dans un contenu de texte. Erreur de traitement de la ressource http://bpa7.13.free.fr/l...
     
    <reponse><A><![CDATA[<table width="100%" align="center"><tr><td width="50%" align="center">...
    Par contre impossible d'en savoir plus ...

  8. #8
    Membre régulier

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Points : 106
    Points
    106
    Par défaut
    Ok, problème identifié:

    le fichier XML que je génère contient du code HTML dont un controle de formulaire de type input.
    Cet input contient une liste de nom et prénom contenu dans une table d'une base MySQL.
    Or certains noms & prénoms sont de la forme majuscule + accent : SÉBASTIEN
    et c'est ce genre de caractere qui fait que le fichier XML est mal interprété par IE et pas par FF.
    Si j'enleve ces caracteres, ca fonctionne tres bien !

    Je tag en résolu ce post, et j'en ouvre un autre pour savoir cmt répondre a ce probleme d'accent + majuscule.

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

Discussions similaires

  1. [POO] Fonction ok sous firefox mais pas sous ie
    Par 1r2R1 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 16/04/2009, 11h55
  2. Bug affichage sous Firefox mais pas sous IE
    Par Mat0x dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 20/07/2008, 19h28
  3. Bug sous IE mais pas sous Firefox ni Opera..
    Par Kher78 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 03/08/2007, 16h08
  4. Bug sous FireFox! mais pas sous IE!
    Par adri5656 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 01/04/2007, 12h15
  5. bug sous ie et pas sous firefox
    Par korntex5 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 11/01/2007, 11h17

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