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

Bibliothèques & Frameworks Discussion :

"getElementsByTagName" avec IE (pas sous FF) [MooTools]


Sujet :

Bibliothèques & Frameworks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Par défaut "getElementsByTagName" avec IE (pas sous FF)
    Bonjour,

    Voici mon problème :

    Je charge le contenu "XML" d'un fichier PHP à l'aide de XHR inclue dans Mootools:

    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    new XHR({
    		method: METHOD,
    		onSuccess: function(txt, xml)
    		{
    			if(txt != 'false')
    			{
    				items = xml.getElementsByTagName("item");
    				size_items = items.length;
    				alert(size_items);
     
    				if(size_items > 0)
    				{...

    Quand je test sous FF le nombre d'items dans l'objet XML, il me retourne 11 (juste ), mais sous IE, il me retourne 0 (faux ), j'ai debugger le script et ça doit venir de l'attribue "getElementsByTagName". !?

    Je souhaiterai connaitre votre avis sur l'utilisation de "getElementsByTagName" avec IE ?

    Je souhaiterai également savoir si vous auriez une alternative à me proposer ?

    Merci beaucoup

    Chris

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    Citation Envoyé par badoux
    Quand je test sous FF le nombre d'items dans l'objet XML, il me retourne 11 (juste ), mais sous IE, il me retourne 0 (faux ), j'ai debugger le script et ça doit venir de l'attribue "getElementsByTagName". !?
    ça serait plus pratique avec le script entier

    A+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Par défaut OK, no problem :-D
    Wouaaa, super rapide !!! Impressionnant !

    Désolé du retard, j'ai légerement mit le code au propre (instruction), pour que cela soit plus propre pour vous ! Désolé ci ce n'est pas le code le plus soignié qui soit !!!

    Voici le script qui est appelé après avoir cliqué sur le bouton "add_your_feed"
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Ext.onReady(function(){
    	/* verifie si on click sur l'id "add_your_feed" */
    	Ext.get('add_your_feed').on('click', function(e) /* si l'action "click" est détéctée, on lance une boite "prompt" qui demande un url (XML) */
    	{
    		Ext.MessageBox.prompt(" <?php echo $lang['add:url_feeds:titre']; ?>", " <?php echo $lang['add:url_feeds:description']; ?>", function(btn, text){
    			if (btn == 'ok') /* si le bouton "ok" du prompt est cliqué */
    			{
    				var file = "<?php echo $racine; ?>scripts/php/check_xml_client.ajax.php"; /* chemin au fichier php */
    				var url = text; /* var contenant le retour, du prompt */
    				check_XML_client(file, url); /* appel de la function "check_XML_client avec le passge des variables file et url */ 
    			}
    		});
    	});
    });

    Voici le script qui récupère le contenu XML généré par le fichier PHP
    Code JS : 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
    function check_XML_client(FILE, URL)
    {
    	POST = 'URL=' + escape(URL);
    	METHOD = 'POST';
     
    	/* Requete XHR de Mootools */
    	new XHR({
    		method: METHOD,
    		onSuccess: function(txt, xml)
    		{
    			/* Si le resutat "txt" de la requete n'est pas false */
    			if(txt != 'false')
    			{
    				items = xml.getElementsByTagName("item");/* cible les tags "item" dans l'objet XML retourné par la requete XHR */
    				size_items = items.length; /* calcule le nombre de tag correspondant à "item" */
    				alert(size_items); /* Debug : check le nombre de resultat retourné par "size_items" */
     
    				if(size_items > 0) /* si "size_items" est plus grand que 0 (résultats) */
    				{
    					/* Appel de la function "LayoutExample", celle-ci affiche un layout "Window" généré par le Frameworks EXTjs */
    					Ext.EventManager.onDocumentReady(LayoutExample.init, LayoutExample, true);
     
    					/* cible sur les variable sur le tags */
    					var title = xml.getElementsByTagName("title");
    					var description = xml.getElementsByTagName("description");
    					var description_small = xml.getElementsByTagName("description_small");
    					var link = xml.getElementsByTagName("link");
     
    					/* 
    					** Ci-dessous: l'appel du premier item, afin de l'afficher dans la div "view-center"
    					** START
    					*/
    						var first_title = title[0].childNodes[0].nodeValue;
    						var first_description = description[0].childNodes[0].nodeValue;
    						var first_url = link[0].childNodes[0].nodeValue;
    						first = '';
    						first += '<div class="row">';
    						first += 	'<div class="title">' + first_title + '</div>';
    						first += 	'<div class="description">' + first_description + '</div>';
    						first += 	'<div class="link"><a href="' + first_url + '" target="_blank">' + tronque_string(first_url, 30) + '</a></div>';
    						first += '</div>';
    						document.getElementById('view-center').innerHTML = first;
    						center.setTitle(tronque_string(first_title, 100));
    					/* END */
     
    					/* la function "addItem sera appelé par la boucle, afin d'injecter le item à la suite */
    					addItem = function(item_id, item_title, item_description, item_description_small, item_link)
    					{
    						var addItem_row    = new Element('div', {'class': 'row'});
    						var addItem_title  = new Element('div', {'class': 'title'}).setHTML(item_title).injectInside(addItem_row);
    						var addItem_desc   = new Element('div', {'class': 'description'}).setHTML(item_description_small).injectAfter(addItem_title);
    						var addItem_lien   = new Element('div', {'class': 'link'}).setHTML('<a href="' + item_link + '" target="_blank">' + tronque_string(item_link, 30) + '</a>').injectAfter(addItem_desc);
     
    						addItem_row.inject($('view-items'));	
    					}
    					/* un boucle en foinction du nombre d'items contenu dans l'objet XML */
    					for(i=0; i < size_items; i++)
    					{
    						var item_title = title[i].childNodes[0].nodeValue;
    						var item_description = description[i].childNodes[0].nodeValue;
    						var item_description_small = description_small[i].childNodes[0].nodeValue;
    						var item_url = link[i].childNodes[0].nodeValue;
    						addItem(i, item_title, item_description, item_description_small, item_url); /* appel de la fonction addItem */
    					}
    				}
    			} else {
    				Ext.Msg.alert('Error', 'Feed is not valid !'); /* Affiche une alert si aucun resultat ou si l'url du flux n'est pas correct */	
    			}
    		},
    		headers: {'Content-type': 'application/x-www-form-urlencoded; charset=utf-8'}
    	}).send(FILE, POST);
    }

    Et pour finir, le code PHP qui genère le XML, renvoyé à JS:
    Code PHP : 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
     
    	$class = new exactly();
     
    	include	($racine.'scripts/lib/magpierss-0.5.2/rss_fetch.inc');
     
    		$class->rss = fetch_rss($_POST['URL']);
     
    header("content-type: application/xml");
    		if(sizeof($this->rss)>0)
    		{
    			$xml = '';
    			$xml .= '<?xml version="1.0" encoding="utf-8"?>';
    			$xml .= '<items>';
     
    				$xml .= '<channel>';
    					$xml .= '<ch-title><![CDATA['.$this->rss->channel['title'].']]></ch-title>';
    					$xml .= '<ch-description><![CDATA['.$this->rss->channel['description'].']]></ch-description>';
    					$xml .= '<ch-link><![CDATA['.$this->rss->channel['link'].']]></ch-link>';
    					$xml .= '<ch-auteur><![CDATA['.$this->rss->channel['webMaster'].']]></ch-auteur>';
    					$xml .= '<ch-language><![CDATA['.$this->rss->channel['language'].']]></ch-language>';
    				$xml .= '</channel>';
     
    				foreach ($this->rss->items as $item)
    				{
    					$xml .= '<item>';
    						$title = $item[title];
    						$description = $item[description];
    						$url = $item[link];
    						$xml .= '<title><![CDATA['.$title.']]></title>';
    						$xml .= '<description><![CDATA['.$description.']]></description>';
    						$xml .= '<description_small><![CDATA['.$this->tronque_string($description, 150).']]></description_small>';
    						$xml .= '<link><![CDATA['.$url.']]></link>';
    					$xml .= '</item>';
    				}
    			$xml .= '</items>';
    			echo $xml;
    			unset($this->rss);
    		} else {
    			echo 'false';
    		}

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Hum ... sans vouloir être pénible, pour trouver les erreurs JS, c'est le code généré qui est nécessaire (piqué dans la page affichée dans le nav, quoi ), pas le code PHP ...

    A+

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Par défaut Peut-être que cela pourra aider ???
    Le soucis, c'est qu'il n'y a rien d'afficher étant donné, qu'il ne trouve pas de tags au nom de item, pourtant quand je check le retour en txt, il m'affiche bien les balise <item>..., ce qui m'intéresse de savoir, c'est pourquoi ca marche avec FF et pas avec IE, pourquoi la fonction "getElementsByTagName" ne trouve pas de tags au nom de "item" ? pense-tu que cela vienne d'une erreur généré dans le XML ?

    Exemple du XML généré par le fichier PHP avec l'adresse du flux rss de techcrunch:

    Code XML : 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
     
    <items>
    <channel>
    <ch-title>CrunchBoard France</ch-title>
    <ch-description>
    CrunchBoard France est site d'annonce d'emploi dédié aux nouvelles technologies de l'internet et consulés par des milliers de lecteurs de TechCrunch France.
    </ch-description>
    <ch-link>http://crunchboardfrance.edgeio.net/index</ch-link>
    <ch-auteur/>
    <ch-language>en-us</ch-language>
    </channel>
    <item>
    <title>
    Country Manager France studiQG.fr / Directeur Marketing
    </title>
    <description>
    <div class="feedflare">
    <a href="http://feeds.feedburner.com/~f/CrunchboardFrance?a=jSjj5QOH">
    <img src="http://feeds.feedburner.com/~f/CrunchboardFrance?i=jSjj5QOH" border="0"/>
    </a>
    <a href="http://feeds.feedburner.com/~f/CrunchboardFrance?a=p6C8MAvp">
    <img src="http://feeds.feedburner.com/~f/CrunchboardFrance?i=p6C8MAvp" border="0"/>
    </a>
    </div>
    </description>
    <description_small>
    Coordonnées: lfreyburger@ [...]
    </description_small>
    <link>
    http://feeds.feedburner.com/~r/CrunchboardFrance/~3/114785896/7073764-Country-Manager-France-studiQGfr-Directeur-Marketing
    </link>
    </item>
    ...
    ...
    ...</items>

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Par défaut Problème d'UTF-8 sur IE7 (et moins peut-être)
    Voila, j'ai trouvé la réponse à mon problème. C'était la meta UTF-8 du fichier XML (celui-ci généré par PHP) qui ne passait pas sur IE 7, je l'ai donc remplacé par une meta ISO, maintenant IE m'affiche correctement le nombre de tags "item"

    Ci-dessous la réponse: (pour les prochaines personnes ayant le même problème)

    Changer
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="utf-8"?>
    Par:
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="ISO-8859-1"?>

    A plus merci encore

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/05/2008, 14h56
  2. La page ne s'affiche pas sous easy php 1-8 avec htaccess
    Par Alexandrebox dans le forum Apache
    Réponses: 9
    Dernier message: 23/11/2007, 17h34
  3. Réponses: 3
    Dernier message: 06/06/2007, 19h45
  4. Box avec texte ne s'affiche pas sous IE mais sous FF et Safari
    Par newbiemac dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/05/2007, 18h45
  5. Xmlhttprequest, problème avec IE... et pas sous Firefox
    Par Saiyan dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 25/01/2006, 15h47

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