Salut à toutes et à tous,
Je me suis remis à la conception de sites Internet et je bloque sur un petit détail plutôt ennuyeux...
En fait, mon but est d'adapter la fenêtre d'une IFRAME en fonction de son contenu. Rien de bien compliqué à ça, j'utilise une fonction Javascript qui va détecter la présence d'un DIV caché dans l'IFRAME (Ce DIV est toujours créée une fois que la page insérée dans l'IFRAME est totalement chargée).
La fonction Javascript est lancée grace à l'onLoad de la page que je charge dans l'IFRAME, et est construite plus ou moins comme suit:
Et l'IFRAME:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 function adaptHeight(which) { if (!which.document.getElementById("DONE")) { setTimeout("adaptHeight(" + which + ")", 20); } else { alert("Page loaded successfully"); return 1; } }
La fonction est appelée via le parent de l'IFRAME, puisque c'est dans le header du parent que je charge les fonctions Javascripts.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <IFRAME src="loading.htm" onload="parent.adaptHeight(this);" scrolling="no" id="main" name="main"> <P>Your user agent does not support frames or is currently configured not to display frames.</P> </IFRAME>
Le problème maintenant:
1. Quand la fonction est lancée la première fois, il 'y a aucun problème, la fonction est relancée car le DIV DONE n'est pas encore chargée.
2. Quand la fonction est lancée une seconde fois, ça me met une erreur "Message: 'object' is undefined".
Après quelques recherches, j'ai constaté que l'utilisation du setTimeout a transformé mon objet 'which'... en simple texte!!
J'ai aussi utilisé la fonction arguments.callee, et là, ça marche niquel. Or, je ne veux pas faire appel à cette fonction. Et d'autre part, j'aimerais aussi comprendre ce qui ne va pas avec la fonction setTimeout.
Quelqu'un aurait une idée ?
Merci par avance,
Mickaël
Partager