Javascript IE

Fermé
Utilisateur anonyme - 10 avril 2008 à 11:22
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 11 avril 2008 à 12:57
Bonjour,

Voila j'ai un petit souci avec un script qui ne marche pas sous IE mais qui fonctionne sous FF.
Il s'agit de refaire un select mais en javascript (afin de pouvoir le charter correctement)

donc dans ma page html j'ai :
un tableau contenant les langue disponible :
		<SCRIPT language="Javascript">
		 <!--
			var tab = ["Fran&ccedil;ais",
				"English",
				"Deutsch",
				"Hollandais"];
		// -->
		</SCRIPT>


et le conteneur du menu :
				<div id="langage">
					<ul id="select" onMouseOut="cache();">
						<li><a href="#" title="" onclick="montre(tab);" class="titre">Choose language</a></li>
					</ul>
				</div>


Puis dans mon fichier javascript mes fonction cache(); et montre(); :
var etat = 0;
function montre(tab) {
	var str = document.getElementById('select').innerHTML;
	for (i=0;i<tab.length;i++){
		if (i == 0) str = str +"\n";
		str = str + "<li><a href='?lang=" + tab[i] + "' onMouseOver='montre(tab);' title='' id=l'" + tab[i] + "'>" + tab[i] + "</a></li>\n";
	}
	if (etat ==0){
		document.getElementById('select').style.zIndex = 100;
		document.getElementById('menu').style.zIndex = -1;
		document.getElementById('select').innerHTML = str;
		etat = 1;
	}
}
function cache() {
	var str = "";
	str = str +"<li><a href='#' title='' onclick='montre(tab);' class='titre'>Choose language</a></li>";
	if (etat == 1){
		document.getElementById('select').style.zIndex = 0;
		document.getElementById('menu').style.zIndex = 0;
		document.getElementById('select').innerHTML = str;
		etat = 0;
	}
}


voila dans si vous avez une idée de ce qui peut ne pas marcher ...
En fait les symptomes sont que sous IE au click le menu se déroule mais quand on passe onMouseOver sur les choix le select se referme...

Merci d'avance
A voir également:

8 réponses

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
10 avril 2008 à 12:29
salut,

essaie d'enlever les commentaires à l'intérieur de ta balise <script>.
si ça ne fonctionne pas montre nous la balise <script> avec laquelle tu inclus le reste du JS.
0
Utilisateur anonyme
10 avril 2008 à 13:44
Cela ne change rien du tout sans les balises de commentaire.

L'inclusion du fichier js se fait comme ça : <SCRIPT LANGUAGE=Javascript SRC="script/langage.js"></SCRIPT>

merci pour ton aide :)
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
10 avril 2008 à 14:04
que cela ne fonctionne pas du tout sous IE alors que tout est bon sous FF ça sent bon le problème de déclaration. de ce que j'en ai déjà expérimenté, IE est assez pointilleux avec ça…

si tu es en XHTML, mets tes balises et attributes en minuscules. par ailleurs, mieux vaut commencer par valider ton code HTML.

pour la balise <script> il manque les guillemets pour la valeur de l'attribut 'language'.
<SCRIPT LANGUAGE="Javascript" SRC="script/langage.js"></SCRIPT>


enfin, as-tu FireBug ?
si oui, signale-t-il quelque chose ?
0
Utilisateur anonyme
10 avril 2008 à 14:18
J'ai rajouté les guillemets pour javascript, j'ai firebug il ne signal rien ...
j'ai validé W3C ya juste quelque pétouille mais c'est des attribut alt ou des method de form mais le script est inclu dans une template pour typo3 et c'est celui ci qui va mettre les contenu.

Je dirais qu'appriori il n'y a pas de probleme de balise Xhtml.
De plus j'écrit toujours mes balises en minuscule...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
10 avril 2008 à 14:25
oh le bougre !!!

donc il doit y avoir une fonction JS qui ne lui revient pas…

as-tu essayé d'ajouter des 'alert()' pour voir si ta fonction réagit ?
ça te permettra de savoir à partir de quel point ça bloque.

et ce ne serait pas à cause de ça :
<ul id="select" onMouseOut="cache();">
						<li><a href="#" title="" onclick="montre(tab);" class="titre">Choose language</a></li>
					</ul>

IE 6 ne gère le 'onover' que sur les liens je crois.
c'est peut être la même chose pour 'onMouseOut'.
tu peux aussi essayer de l'écrire en minuscules, on ne sait jamais.
0
Utilisateur anonyme
10 avril 2008 à 16:59
Actuelement il ne marche pas sous ie7, il n'ya pas que ie6...
j'ai tester onmouseover en minuscule, rien ne change ...
j'en tenter les alert mais se n'ai aps facile parce que la sourie bouge pour aller fermer l'alert ^^ dans on passe en omouseout de suite ^^ d'ailleur toutes les alerts se font appriorie sous IE et FF...
0
Utilisateur anonyme
11 avril 2008 à 11:42
Le probleme c'est que sous IE le oumouseout="cache();" sur le ul s'execute avant le onmouseover="montre();" sur le li

Y'a t'il un moyen de mettre un delais a l'execution de la fontion javascript?
En effet si je met un delais meme minime a lexecution de la fonction cache alors j'aurais une chance que la fonction montre soit executé ..

quelqu'un me suis? ^^!
0
Utilisateur anonyme
11 avril 2008 à 12:13
Solution trouver,

J'ai déclarré un timer de 50ms sur l'exe de la fonction cache();
et a l'exe de montre si le timer existe alors je le kill avec :

if (timer) clearTimeout(timer);


ça marche impeccable

Merci pour votre aide
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
11 avril 2008 à 12:57
salut,

bravo pour le contournement mais je dois t'avouer que je ne comprends pas grand chose au pourquoi du comment !
-:oD

bon courage pour la suite !
0