Iframe et communication avec le parent (solution)

Iframe et communication avec le parent (solution) - HTML/CSS - Programmation

Marsh Posté le 17-07-2003 à 08:48:23    

Salut tt le monde.
 
apres m'etre pas mal galéré à trouver une solution pour appeler une fonction du frame parent depuis un iframe (enfant donc...) voila la solution:
 
le frame parent on l'appel par.html et l'iframe ca va etre enf.html
 
alors par.html ressemble à ça:

Code :
  1. <html>
  2. <body onLoad="init();">
  3. <iframe src="enf.html" name="enfant"></iframe>
  4. </body>
  5. <script>
  6. function init(){
  7.      document.enfant.val = fonctionaappeler;
  8. }
  9. function fonctionaappeler(test){
  10.      alert(test);
  11. }
  12. </script>
  13. </html>


 
alors pour expliquer vite fait:  
     - val est une variable contenue dans enf.html, a ki on va donner un espece de pointeur sur la fonction fonctionaappeler (je sais y'a pas de pointeur en javascript mais je sais pas comment appeler ca...)
     - la fonction init() est obligatoirement dans par.html. elle ne peut pas etre dans un .js
     - fonctionaappeler peut etre dans un .js
 
maintenant le code de enf.html:

Code :
  1. <html>
  2. <body>
  3. <input type="button" onClick="clicked()" value="Click Me!!!">
  4. </body>
  5. <script>
  6. /* declaration de val*/
  7. val = null;
  8. /*declaration de clicked*/
  9. function clicked(){
  10.    if(val != null)
  11.            val("OUAI" );
  12. }
  13. </script>
  14. </html>


 
 
voila donc la on declare val et on l'initialise a null.
a l'initialisation de par.html, on attribut le "pointeur" vers fonctionaappeler. ensuite pour appeler cette derniere a partir de enf.html, il suffit de faire 'val()'.
le test est juste pour le cas ou enf.html est pas charger a partir par.html
 
voila j'espere que ca peut vous aider. si vous avez des solutions plus rapides je suis preneur.
 
allez bon courage a tous ;)

Reply

Marsh Posté le 17-07-2003 à 08:48:23   

Reply

Marsh Posté le 17-07-2003 à 10:27:03    

Plus rapide :
 
Dans ton iframe enfant, tu veux appeler une fonction du parent (ou d'un de ses enfants) :
 
window.parent.nomDeLIFrame.nomDeLaFonction (paramètres);


---------------
Dans le monde, il n'y a que 10 sortes de personnes : ceux qui savent compter en binaire et ceux qui ne savent pas
Reply

Marsh Posté le 17-07-2003 à 11:21:07    

ouai j'avais test mais je sais pas pourquoi ca me disais que l'objet ne possédait pas la methode. donc g du faire ca.

Reply

Marsh Posté le 17-07-2003 à 11:43:30    

J'ai une page avec 3 iframes dedans qui communiquent comme ça.
Je m'en sers tous les jours et ça marche nickel.


---------------
Dans le monde, il n'y a que 10 sortes de personnes : ceux qui savent compter en binaire et ceux qui ne savent pas
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed