2011-09-22 5 views
0

Je suis sûr que c'est assez basique, mais je n'arrive pas à trouver l'une des solutions que j'ai trouvées pour travailler avec moi. Fondamentalement, j'ai besoin d'obtenir le contenu d'un div d'un iframe, et les écris à un div dans la page parente. Voilà ce que j'ai:Afficher le contenu de l'iframe div sur la page parent

<iframe src="slideshows/slideshow/case2.html" frameborder=0 scrolling="no" 
id="frame1" name="frame1"></iframe> 

<div id="caption"> 
    <script type="text/javascript"> 
    var caption = frame1.document.getElementById('slidecaption'); 
    document.write(caption); 
    </script> 
</div> 

« slidecaption » est le nom de Id dans le iframe que je suis en train de saisir.

Tout ce que je reçois est "nul". Est-ce parce que le contenu de l'iframe n'a pas encore été chargé? Si oui, comment puis-je attendre jusqu'à ce que l'iframe soit chargé?

Merci, Scott


Merci à vous deux pour votre aide. J'ai tout compris, basé sur l'idée de Márcio:

je mets la fonction dans la page parent:

<script type="text/javascript"> 
function send() { 
document.getElementById('slidecaption').innerHTML = 
frame1.document.getElementById('slidecaption').innerHTML} 
</script> 

Et je mets l'appel dans le document iframe:

<body onload="parent.send();"> 

Cordialement, Scott

+0

où est-ce que frame1 est déclaré dans js? – BNL

+0

Comme vous pouvez le dire, j'ai peu ou pas de compréhension de javascript. Ce que vous voyez ci-dessus est tout ce que j'ai actuellement là-bas. Il est reconstitué à partir de quelques exemples. Tout ce que j'ai trouvé semblait utiliser la valeur du nom iframe sans aucune sorte de déclaration. – sharcupine

+0

Avez-vous le contrôle du document dans le cadre et si ** oui **, vous pouvez mettre une fonction dans l'événement 'onload' du' body'? Si vous pouvez faire cela, je pense que vous pouvez le faire dans le sens inverse. Mettez un événement onload sur le document doc et une fonction qui récupère la valeur de votre objet et l'envoie au document parent avec 'parent' comme ceci:' parent.document.getElementbyId ('receiver'). InnerHTML = document.getElementById (' target '). innerHTML' –

Répondre

0

Je ne suis pas sûr que ce soit la seule chose que vous devez faire, mais vous avez certainement besoin de récupérer frame1 de la dom.

<script type="text/javascript"> 
    var frame1 = document.getElementById('frame1'); 
    var caption = frame1.contentWindow.document.getElementById('slidecaption'); 
    document.write(caption); 
</script> 
+0

Merci. Je suppose qu'il y a des problèmes supplémentaires: Déclaration de frame1 a abouti à "Erreur: frame1.document is undefined". – sharcupine

+0

Avez-vous ajouté l'appel à contentWindow? – BNL

+0

Désolé-raté cela. Je l'ai ajouté et maintenant il renvoie "null" à nouveau. – sharcupine

Questions connexes