11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

d'abord une petite mise en contexte. je développe un site dans lequel une page contient plusieurs IFRAME. La première IFRAME contient une source constituée entre autre de LABEL. Lorsque je clique sur certains de ces LABEL une fonction javascript est exécutée. Cette fonction simule l'envoi par méthode POST d'un formulaire vers une autre page contenue dans une deuxième IFRAME et affichant les informations voulues.

le javascript :
 	NewNode = document.createElement("INPUT") ;
		NewNode.setAttribute("type", "hidden");
		NewNode.setAttribute("name", "navbar");
		NewNode.setAttribute("value", "navbar");
		document.forms["sendmodif"].appendChild(NewNode3);
		// send to form
		document.forms["sendmodif"].method="post";
		document.forms["sendmodif"].target="navigation_bar";
		document.forms["sendmodif"].action=target_form;
		document.forms["sendmodif"].submit(); 



Pour ce qui est du fonctionnement sous FF, aucun soucis, tout se déroule sans accro. Par contre pour ce qui est de IE, je bute sur un problème plutôt surprenant. Un premier clic sur un LABEL permet de tout lancer correctement, par contre si je re-clic sur ce LABEL (ou un autre d'ailleurs) la deuxième IFRAME apparait blanche.

"Ton javascript ne s'est peut être pas bien exécuté la seconde fois ou alors il y a une erreur dans le php de la page contenue dans la deuxième IFRAME" me direz-vous...Eh bien non. Après vérification, tout s'exécute bien. En effet si je modifie la taille de la fenetre de IE avec la souris, le contenu de la deuxième IFRAME apparaît enfin...je ne comprend vraiment pas ce phénomène et n'est trouvé aucune solution auprès de notre ami google...si l'un entre vous a quelque chose à me proposer...

merci
Modifié par tigux (18 Feb 2009 - 17:36)
En fait, ça peut être un problème de recalcul du layout.
Il faut essayer de forcer le recalcul du layout sous IE.
Pour cela tenter l'ajout d'un innerHTML ou modifier className.
Tiens nous au jus.
nickel!! Smiley biggrin
c'est mon boss qui va être content


if(ie)
		{
		if(parent.document.getElementById('block_navigation'))
			{
			parent.document.getElementById('block_navigation').className='block_bar';
			}
		}


dans une fonction appelée dans un onload..