Page 1 sur 1

Liste déroulante fonctionne sous Mozilla pas IE...

Publié : 24 oct. 2005, 14:54
par Loulipo
...enfin pas vraiment le site en entier mais une partie. Il s'agit d'une liste déroulante avec sous liste déroulante (tout cela fonctionne avec du PHP et base de donnée MYSql). Sous Mozilla, tout s'ouvre sans problème et sous IE impossible de dérouler la sous liste. Du coup étant donné qu'il s'agit d'un formulaire il est impossible de le valider puisque ce champ n'a pas été renseigné... Ce n'est pas moi qui ai crée tout ca mais j'ai trouvé un petit quelque chose comme ca : (il va de soi que j'ny comprend rien mais etant donné que j'ai vu IE je me suis dit que c'était peut-être là que se trouvait le problème...). Merci d'avance si vous avez une idée...

Code : Tout sélectionner

	// Compilation conditionnelle d'IE
	/*@cc_on
	@if (@_jscript_version >= 5)
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
				xmlhttp = false;
			}
		}
	@else
		xmlhttp = false;
	@end @*/

	// on essaie de créer l'objet si ce n'est pas déjà fait
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp = false;
		}
	}

	if (xmlhttp) {
	  // on définit ce qui doit se passer quand la page répondra
	  xmlhttp.onreadystatechange = function() {
	    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
	      // Traitement de la réponse.
	      tableauResultats = xmlhttp.responseText.split("|");
	      document.getElementsByName(cible)[0].innerHTML = "";
	      for ( i in tableauResultats ) {
		// on regarde si il faut ajouter l'attribut selected au chargement de la page
		if ( event == 'onLoad' && tableauResultats[i] == '<?= $sousTheme ?>')
			elem = new Option(tableauResultats[i],tableauResultats[i],false,true);
		else elem = new Option(tableauResultats[i],tableauResultats[i],false,false);
		document.getElementsByName(cible)[0].appendChild(elem);
		if (tableauResultats.length > 2) document.getElementsByName(cible)[0].style.display="";
		else document.getElementsByName(cible)[0].style.display="none";
	      }
	    }
	  }
	}
Édition modérateur : merci d'utiliser les balises pour rendre votre code lisible.

Publié : 24 oct. 2005, 16:11
par Benoit
Il me semble que ceci (pour parcourir un tableau) est du JavaScript 1.6 et n'est donc peut-être pas compris par IE :

Code : Tout sélectionner

for ( i in tableauResultats ) { 

Publié : 26 oct. 2005, 11:25
par Loulipo
Ah voui forcemment ca serait plutot embetant... Du coup j'serais complètement bloquée alors... J'ai essayé des scripts sencés rendre le code javascript compatible pour tout navigateurs mais a pas marché...

Publié : 26 oct. 2005, 15:55
par Loulipo
J'ai testé la liste avec tout plein de navigateurs différents... Avec tous ma liste déroulante fonctionne...sauf IE...c'est quand même dingue...

Publié : 26 oct. 2005, 16:31
par Benoit
Tu as essayé d'utiliser une boucle plus classique (avec un compteur) ?

Sinon un

Code : Tout sélectionner

alert(xmlhttp.responseText)
juste avant "traitement de la réponse" donne quoi sous IE ? Tu reçois bien la réponse ou c'est avant ça déjà que ça foire ?