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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    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
    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 confirmé

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    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
    Billets dans le blog
    20
    Par défaut
    la fonction getXhr() est correcte, l'erreur doit provenir d'ailleurs dans ton code.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  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 : 38
    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
    Par défaut
    Bonjour,
    Je pense plutot que c'est le script executé qui ne renvoie pas du XML.

  6. #6
    Membre confirmé

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    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 !!

+ 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