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 :

Chargement XML avec Safari, Opera, Chrome


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut Chargement XML avec Safari, Opera, Chrome
    Bonjour,

    J'ai crée un site dans lequel j'utilise des données XML que je vais intégrer dans le HTML à travers JavaScript.
    Voici mon code :
    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
    var xmlVaudCRB;
    function loadXMLVaudCRB()
    {
    //load xml file
    // code for IE
    if (window.ActiveXObject)
    {
    	xmlVaudCRB=new ActiveXObject("Microsoft.XMLDOM");
    	xmlVaudCRB.async=false;
    	xmlVaudCRB.load("xml/vaudcrb.xml");
    	getoffrevaudcrb();
    }
    // code for Mozilla, Firefox, Opera, etc.
    else if (document.implementation && document.implementation.createDocument)
    {
    	xmlVaudCRB=document.implementation.createDocument("","",null);
    	xmlVaudCRB.load("xml/vaudcrb.xml");
    	xmlVaudCRB.onload=getoffrevaudcrb; <----?
    }
    else
    {
    	alert('Votre navigateur ne peut pas afficher ce script!');
    }
    }
    
    function getoffrevaudcrb()
    {
    document.getElementById("ref100").innerHTML=xmlVaudCRB.getElementsByTagName("ref100")[0].childNodes[0].nodeValue;
    document.getElementById("ref101").innerHTML=xmlVaudCRB.getElementsByTagName("ref101")[0].childNodes[0].nodeValue;
    document.getElementById("ref102").innerHTML=xmlVaudCRB.getElementsByTagName("ref102")[0].childNodes[0].nodeValue;
    document.getElementById("ref103").innerHTML=xmlVaudCRB.getElementsByTagName("ref103")[0].childNodes[0].nodeValue;
    document.getElementById("ref104").innerHTML=xmlVaudCRB.getElementsByTagName("ref104")[0].childNodes[0].nodeValue;
    document.getElementById("ref105").innerHTML=xmlVaudCRB.getElementsByTagName("ref105")[0].childNodes[0].nodeValue;
    document.getElementById("ref106").innerHTML=xmlVaudCRB.getElementsByTagName("ref106")[0].childNodes[0].nodeValue;
    document.getElementById("ref107").innerHTML=xmlVaudCRB.getElementsByTagName("ref107")[0].childNodes[0].nodeValue;
    document.getElementById("ref108").innerHTML=xmlVaudCRB.getElementsByTagName("ref108")[0].childNodes[0].nodeValue;
    document.getElementById("ref109").innerHTML=xmlVaudCRB.getElementsByTagName("ref109")[0].childNodes[0].nodeValue;
    document.getElementById("ref110").innerHTML=xmlVaudCRB.getElementsByTagName("ref110")[0].childNodes[0].nodeValue;
    document.getElementById("ref111").innerHTML=xmlVaudCRB.getElementsByTagName("ref111")[0].childNodes[0].nodeValue;
    document.getElementById("ref112").innerHTML=xmlVaudCRB.getElementsByTagName("ref112")[0].childNodes[0].nodeValue;
    document.getElementById("ref113").innerHTML=xmlVaudCRB.getElementsByTagName("ref113")[0].childNodes[0].nodeValue;
    document.getElementById("ref114").innerHTML=xmlVaudCRB.getElementsByTagName("ref114")[0].childNodes[0].nodeValue;
    }
    Ce code il marche pour Mozilla Firefox et IE mais pas pour Safari,Opera et Chrome.
    Une des premières questions (rouge dans le code) est celle d'un débutant JS :
    pourquoi dans la ligne "xmlVaudCRB.onload=getoffrevaudcrb;" on met pas () à la fin pour la fonction "getoffrevaudcrb" - il s'agit bien d'une fonction et ainsi écrire : "xmlVaudCRB.onload=getoffrevaudcrb();" - eh beh non ça marche pas si on met la paranthèse, mystère...
    Deuxième question plus importante et qui fait l'objet du titre du message.
    J'ai appris que la fonction "load" n'est pas standard W3C et qu'il faut utiliser "xmlhttprequest" pour que des navigateurs comme Safari,Chrome et Opera affiche le contenu que je désire.
    Voici donc le code refait :
    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
     
       var xmlVaudCRB;
     
       function loadXMLVaudCRB()
       {
              var xmlpath = "xml/vaudcrb.xml" 
    		  var xmlhttp = new XMLHttpRequest();
              xmlhttp.open("GET", xmlpath, false);
    	      xmlhttp.setRequestHeader('Content-Type', 'text/xml');
    	      xmlhttp.send("");
    	      xmlVaudCRB = xmlhttp.responseXML;
    	      getoffrevaudcrb();
     
       }
     
    function getoffrevaudcrb()
    {
    document.getElementById("ref100").innerHTML=xmlVaudCRB.getElementsByTagName("ref100")[0].childNodes[0].nodeValue;
    document.getElementById("ref101").innerHTML=xmlVaudCRB.getElementsByTagName("ref101")[0].childNodes[0].nodeValue;
    document.getElementById("ref102").innerHTML=xmlVaudCRB.getElementsByTagName("ref102")[0].childNodes[0].nodeValue;
    document.getElementById("ref103").innerHTML=xmlVaudCRB.getElementsByTagName("ref103")[0].childNodes[0].nodeValue;
    document.getElementById("ref104").innerHTML=xmlVaudCRB.getElementsByTagName("ref104")[0].childNodes[0].nodeValue;
    document.getElementById("ref105").innerHTML=xmlVaudCRB.getElementsByTagName("ref105")[0].childNodes[0].nodeValue;
    document.getElementById("ref106").innerHTML=xmlVaudCRB.getElementsByTagName("ref106")[0].childNodes[0].nodeValue;
    document.getElementById("ref107").innerHTML=xmlVaudCRB.getElementsByTagName("ref107")[0].childNodes[0].nodeValue;
    document.getElementById("ref108").innerHTML=xmlVaudCRB.getElementsByTagName("ref108")[0].childNodes[0].nodeValue;
    document.getElementById("ref109").innerHTML=xmlVaudCRB.getElementsByTagName("ref109")[0].childNodes[0].nodeValue;
    document.getElementById("ref110").innerHTML=xmlVaudCRB.getElementsByTagName("ref110")[0].childNodes[0].nodeValue;
    document.getElementById("ref111").innerHTML=xmlVaudCRB.getElementsByTagName("ref111")[0].childNodes[0].nodeValue;
    document.getElementById("ref112").innerHTML=xmlVaudCRB.getElementsByTagName("ref112")[0].childNodes[0].nodeValue;
    document.getElementById("ref113").innerHTML=xmlVaudCRB.getElementsByTagName("ref113")[0].childNodes[0].nodeValue;
    document.getElementById("ref114").innerHTML=xmlVaudCRB.getElementsByTagName("ref114")[0].childNodes[0].nodeValue;
    }
    Eh beh cette fois-ci plus rien ne marche.... Fiorefox et IE inclus
    Je ne sais pas comment résoudre ce problème...
    Une idéee?
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Citation Envoyé par mra_ch Voir le message
    Bonjour,
    ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {
    	xmlVaudCRB=document.implementation.createDocument("","",null);
    	xmlVaudCRB.load("xml/vaudcrb.xml");
    	xmlVaudCRB.onload=getoffrevaudcrb; <----?
    }
    bonjour
    ce code ne peux pas fonctionner
    tu indique à lobjet xmlVaudCRB d'utiliser la fonction getoffrevaudcrb lorsqu'il aura chargé le fichier xml

    mais tu lui indique après l'avoir chargé

    ça marche comme le onload de l'élément body en html
    si tu attends que la page soit chargée et qu'ensuite du indique au navigateur d'exécuter ton code lorsque la page se charge il attend l'événement "load" et il peut attendre longtemps vu qu'il est déjà passsé et ne reviendra pas.

    pour ajax ton code n'est pas bon du tout
    je te conseille d'aller sur la page des cours ajax
    http://dmouronval.developpez.com/tut...-requete-ajax/
    http://ajax.developpez.com/cours/

    A+JYT

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut Problème Chorme,Opera ,Safari
    Merci pour votre réponse,
    En effet je comprends votre explication, n’empêche que ce code marche : allez sur www.revirest.ch et choisissez "Café, Restaurant , Brasserie" dans le menu - Vaud ou Genève (le contenu xml est rendu à l'html)
    Je répète ma 1ère question en ce qui concerne le JavaScript :
    xmlVaudCRB.onload=getoffrevaudcrb; <----?
    Pourquoi il y a pas de "()" à la fin de la fonction "getoffrevaudcrb"
    Et deuxièmement la question plus importante pourqoui en utilisant "xmlhttprequest" mon code adapté pour Safari,Opera et Chrome ne marche pas?
    Merci d'avance,
    mra_ch

  4. #4
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Citation Envoyé par mra_ch Voir le message
    Merci pour votre réponse,
    En effet je comprends votre explication, n’empêche que ce code marche : allez sur www.revirest.ch et choisissez "Café, Restaurant , Brasserie" dans le menu - Vaud ou Genève (le contenu xml est rendu à l'html)
    Je répète ma 1ère question en ce qui concerne le JavaScript :
    xmlVaudCRB.onload=getoffrevaudcrb; <----?
    Pourquoi il y a pas de "()" à la fin de la fonction "getoffrevaudcrb"
    Citation Envoyé par sekaijin
    tu indique à lobjet xmlVaudCRB d'utiliser la fonction getoffrevaudcrb lorsqu'il aura chargé le fichier xml
    Citation Envoyé par mra_ch Voir le message
    Et deuxièmement la question plus importante pourqoui en utilisant "xmlhttprequest" mon code adapté pour Safari,Opera et Chrome ne marche pas?
    Merci d'avance,
    mra_ch
    Citation Envoyé par sekaijin
    pour ajax ton code n'est pas bon du tout
    je te conseille d'aller sur la page des cours ajax
    http://dmouronval.developpez.com/tut...-requete-ajax/
    http://ajax.developpez.com/cours/
    A+JYT

Discussions similaires

  1. Probleme avec mozilla opera safari
    Par Strasha dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 05/06/2009, 23h28
  2. Chargement XML et Safari
    Par oaouh dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/05/2009, 18h17
  3. [CKEditor] ToolBar ne s'affiche pas avec safari et opera
    Par Philouphrq dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 23/05/2008, 20h08
  4. Chargement Fichier XML avec javascript
    Par kaptnkill dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/10/2007, 14h22
  5. Réponses: 2
    Dernier message: 22/05/2006, 16h44

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