Javascript Ko sous FireFox

Résolu/Fermé
patate34 Messages postés 44 Date d'inscription mardi 21 août 2007 Statut Membre Dernière intervention 18 septembre 2010 - 10 mars 2010 à 14:13
patate34 Messages postés 44 Date d'inscription mardi 21 août 2007 Statut Membre Dernière intervention 18 septembre 2010 - 10 mars 2010 à 23:48
Bonjour,
J'ai en ligne un catalogue de bijoux. Le traitement ci-dessous fonctionne très bien sur IE, il s'appuie sur un fichier XML pour restituer les vignettes. Par contre il est Ko sous firefox, rien ne s'affiche. Par contre, si je rajoute alert(liste_produits.length); juste avant la boucle for, là mes boites s'affichent !??
Quelqu'un à déjà rencontrer ce problème ? Merci pour votre aide.
**********************************************************
<script type="text/javascript">
LoadXML("nouveautes.xml");
// recuperer les éléments du fichier afin de créer un formulaire par produit
alert(liste_produits.length);
for(i=0; i < liste_produits.length ; i++) {
// Verification article disponible
	if (liste_produits[i][4] == 'N') {
		affiche = "<div class=\"articleboite\"><table class=\"articleIndispo\">";
	} else {
		affiche = "<div class=\"articleboite\"><table class=\"article\">";
	}
affiche += "<tr><th colspan=\"2\" class=\"TitreArticle\">"+ liste_produits[i][1] +"</th><tr><td colspan=\"2\" class=\"CadreArticle\" align=\"center\" >";
	if (liste_produits[i][4] == 'N') {
	// si article non disponible, on affiche le pictogramme epuise sur l'image
	affiche+="<img class=\"epuise\" src=\"./images/picto_epuise1.png\" />";
	}
		affiche += "<a href=\"javascript:OuvrirFenetre('./catalogue/" + liste_produits[i][0] + "_zoom.jpg','" + liste_produits[i][1]+"',463,700)\"><img src= \"./catalogue/" + liste_produits[i][0] + "_mini.jpg\" alt=\"Cliquez ici pour agrandir la photo...\" title=\"" + liste_produits[i][1] + "\" width=\"100\" height=\"75\"></a></td></tr>";
		affiche += "<tr><td class=\"PrixInitial\">"+ liste_produits[i][3]*2 + "&euro;</td> ";
		affiche += "<td class=\"PrixFlash\">"+ liste_produits[i][3] + "&euro;</td></tr> ";
		affiche += "<tr><td colspan=\"2\" class=\"FormulaireArticle\" >";
		affiche += "<form name=\"" + liste_produits[i][0] + "\" id=\"" + liste_produits[i][0] + "\" onsubmit=\"recup_produits(this.name);return false\">";
//		affiche += "<label>" + liste_produits[i][3] + "&euro; </label>";
		affiche += "<input name=\"libelle\" type=\"hidden\" value=\"" + liste_produits[i][2] + "\"/>";
		affiche += "<input name=\"id\" type=\"hidden\" value=\"" + liste_produits[i][0] + "\"/>";
		affiche += "<input name=\"prix\" type=\"hidden\" value=\"" + liste_produits[i][3]  + "\"/>";
		if (liste_produits[i][4] == 'N') {
		// si article non dispo, on rend disabled le champ de saisie du formulaire et le bouton
		affiche += "<input name=\"quantite\" id=\"qt_" + liste_produits[i][0] + "\" type=\"text\" value=\"1\" size=\"2\" maxlength=\"2\" disabled=\"disabled\"/>";
		affiche += "<input type=\"submit\" value=\"+\" disabled=\"disabled\"></form></td>";
	} else {
		affiche += "<input name=\"quantite\" id=\"qt_" + liste_produits[i][0] + "\" type=\"text\" value=\"1\" size=\"2\" maxlength=\"2\"/>";
		affiche += "<input type=\"submit\" value=\"+\" ></form></td>";
	}	
affiche +="</tr><td colspan=\"2\" class=\"descriptif\"> #"+ liste_produits[i][0] +"-"+ liste_produits[i][2] + "</td></tr></table></div>";
document.write(affiche);
}
</script>
A voir également:

4 réponses

biboo_ Messages postés 1249 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 14 mars 2012 106
10 mars 2010 à 14:26
T'as pas installé Firebug pour avoir un retour de tes problèmes javascript?
Parce qu'il y a très probablement une erreur JS, on est pas très avancé. :/
0
patate34 Messages postés 44 Date d'inscription mardi 21 août 2007 Statut Membre Dernière intervention 18 septembre 2010 1
10 mars 2010 à 22:56
Hello biboo,
le pb c'est qu'en exécutant ce code avec Firebug, il fonctionne très bien....
Ca ressemblerait à un pb de synchro, car en mode débug ou en affichant une alerte dans le code, tout fonctionne très bien...
0
patate34 Messages postés 44 Date d'inscription mardi 21 août 2007 Statut Membre Dernière intervention 18 septembre 2010 1
10 mars 2010 à 23:08
Je me demande si le pb ne vient pas du code de la fonction suivante :
var moz = (typeof document.implementation != "undefined") && (typeof document.implementation.createDocument != "undefined");
var ie = (typeof window.ActiveXObject != "undefined");
function LoadXML(xmlFile){
if (moz) {
xmlDoc = document.implementation.createDocument("", "doc", null);
xmlDoc.load(xmlFile);
}
else if (ie) {
// Créer une instance d'un objet XML.
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
// Vérifier qu'elle est traitée entièrement avant de poursuivre avec le code.<br>
//Enforce download of XML file first. IE only.
xmlDoc.async=false;
while(xmlDoc.readyState != 4) {};
xmlDoc.load(xmlFile);
}
if (typeof xmlDoc!="undefined"){
if (window.ActiveXObject){ //if IE, simply execute script (due to async prop).
ProcessXML();
}
else{ //else if NS6 of mozilla, execute script when XML object has loaded
xmlDoc.onload = ProcessXML();
}
}
}
0
patate34 Messages postés 44 Date d'inscription mardi 21 août 2007 Statut Membre Dernière intervention 18 septembre 2010 1
10 mars 2010 à 23:48
C'est ok, j'ai trouvé !!!
Je ne sais pas ce que ça fait exactement, sauf d'indiquer que le téléchargement asynchrone n'est pas permis. Voici la solution :
if (moz) {
xmlDoc = document.implementation.createDocument("", "doc", null);
xmlDoc.async=false;
xmlDoc.load(xmlFile);
}
...
0