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:
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:
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
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