Bonjour,
Je cherche a acceder a un element d'une iframe, en l'occurence la valeur d'un champ de saisie. J'ai cherche un long moment sans trouver de solution a mon probleme.
Je dispose de deux pages. Le code a ete volontairement simplifie.
Index.php cree l'iframe en javascript et tente de l'afficher a l'ecran a l'aide d'un alert().
Code :
- <body>
- <div id='frame'>
- </div>
- </body>
- <script type="text/javascript">
- var iframe = "<iframe id='idframe' name='frame' src='iframe.php'></iframe>";
- document.getElementById('frame').innerHTML = iframe;
- alert(window.frames['frame'].document.getElementById('frame').value);
- </script>
|
Iframe.php cree le contenu de l'iframe.
Code :
- <?php
- echo "<body>";
- echo "<input type='text' id='frame' value='content'>";
- echo "</body>";
- ?>
|
Lorsque j'execute ma page Index.php, rien ne se passe.
Apres avoir longtemps cherche pour resoudre le probleme, j'ai trouve une solution. Le code ci-dessus fonctionne a la condition que je fasse, juste avant mon alert, un document.getElementById('idframe'), sans avoir besoin de recuperer la valeur ni d'en faire quoi que ce soit d'ailleurs.
Procedant ainsi, mon alert() me renvoit le contenu du champ auquel je tente d'acceder.
Cette solution me convient. Toutefois, je souhaiterais comprendre pourquoi il a ete necessaire de proceder ainsi pour parvenir au resultat souhaite. Quelqu'un pourrait-il me dire pourquoi l'execution de document.getElementById('idframe') est necessaire avant de pouvoir acceder a un champ de l'iframe ?
Je vous remercie par avance.