2010-10-22 18 views
42

ho questo codice HTML:Get documento di IFrame, da JavaScript nel documento principale

<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> 

Il problema è che ricevo il messaggio "Bad". Ciò significa che il documento di iframe non viene ottenuto correttamente e ciò che viene restituito dalla funzione GetDoc è il documento principale.

Sarei grato se tu dicessi dove faccio il mio errore. (Voglio ottenere il documento ospitato in IFrame.)

Grazie.

+0

Questo è stato chiesto nel 2010, oggi nel 2015, questo non funzionerebbe con nessun browser più recente, a meno che non si stia sviluppando su google.com. A causa della politica dell'origine incrociata, non è possibile accedere al contenuto dell'iframe, se esso punta a una pagina su un dominio diverso da quello da cui è stato caricato il documento originale. – aorcsik

risposta

93

Si dovrebbe essere in grado di accedere al documento nel IFRAME utilizzando il seguente codice:

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

Tuttavia, non sarà in grado di farlo se la pagina nel frame viene caricato da un dominio diverso (come google.com). Questo è a causa del browser Same Origin Policy.

+2

Eh? Ciò restituirà 'undefined' (la maggior parte dei browser) o il documento che l'elemento '