2010-10-22 13 views
42

JavaScript gelen iFrame en belgeyi alın ben bu HTML kodunu vardır:ana belgede

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

Sorun mesajı "Kötü" elde ediyoruz. Bu, iframe belgesinin doğru şekilde alınmadığı ve GetDoc işlevi tarafından döndürülen şeyin ana belge olduğu anlamına gelir.

Hata yaptığımı söylediyseniz minnettar olurum. (IFrame'de barındırılan belgeyi almak istiyorum.)

Teşekkür ederiz.

+0

Bu, 2010 yılında, bugün 2015'te, google.com'a gelişmedikçe, daha yeni bir tarayıcıda çalışmayacaktı. Çapraz kaynak politikası nedeniyle, orijinal belgenizin yüklü olduğu alandan farklı bir alandaki bir sayfaya işaret ediyorsa iframe içeriğine erişemezsiniz. – aorcsik

cevap

93

Aşağıdaki kodu kullanarak IFRAME dokümana erişmek mümkün olmalıdır: karede sayfa farklı bir etki alanından yüklenen eğer (bunu yapmak mümkün olmayacaktır, ancak

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

google.com gibi). Bu, tarayıcının Same Origin Policy'dan kaynaklanmaktadır.

+2

Huh? Bu, 'undefined' (çoğu tarayıcı) veya OP'nin düzeltmek istediği sorun olan'