2010-10-22 3 views
42

Je le code HTML:Obtenez le document IFrame, à partir de JavaScript dans le document principal

<html> 
    <head> 
    <script type="text/javascript"> 
     function GetDoc(x) 
     { 
     return x.document || 
      x.contentDocument || 
      x.contentWindow.document; 
     } 

     function DoStuff() 
     { 
     var fr = document.all["myframe"]; 
     while(fr.ariaBusy) { } 
     var doc = GetDoc(fr); 
     if (doc == document) 
      alert("Bad"); 
     else 
      alert("Good"); 
     } 
    </script> 
    </head> 
    <body> 
    <iframe id="myframe" src="http://example.com" width="100%" height="100%" onload="DoStuff()"></iframe> 
    </body> 
</html> 

Le problème est que je reçois un message "Bad". Cela signifie que le document de iframe n'est pas obtenu correctement, et ce qui est actuellement retourné par la fonction GetDoc est le document parent.

Je serais reconnaissant, si vous avez dit où je fais mon erreur. (Je veux obtenir un document hébergé dans IFrame.)

Merci.

+0

Cela a été demandé en 2010, aujourd'hui en 2015, cela ne fonctionnerait pas dans un navigateur plus récent, sauf si vous développez google.com. En raison de la stratégie d'origine croisée, vous ne pouvez pas accéder au contenu de l'iframe si celui-ci pointe vers une page sur un domaine différent de celui de votre document d'origine. – aorcsik

Répondre

93

Vous devriez être en mesure d'accéder au document dans le IFRAME en utilisant le code suivant:

document.getElementById('myframe').contentWindow.document 

Cependant, vous ne serez pas en mesure de le faire si la page dans le cadre est chargé d'un domaine différent (comme google.com). C'est à cause du Same Origin Policy du navigateur.

+2

Huh? Cela renverra soit 'undefined' (la plupart des navigateurs) soit le document que contient l'élément'