2013-01-22 15 views
41

Mam iframe jak tenJak odebrać wewnątrz elementu iframe używając document.getElementById

<iframe name="myframe1" id="myframe1" width="100%" height="100%" src="a.html"> 
<html> 
    <head></head> 
    <frameset name="myframe2" cols="0%, 100%" border="0" frameBorder="0" frameSpacing="0"> 
     <frame name="page1" src="c.html" scrolling="no"></frame> 
     <frame name="page2" src="d.html" > 
      <html> 
       <head></head> 
       <body id="top"> 
        <div id="div1"> 
         <div id="div2"> 
          <div id="div3"> 
           <ul id="x"> 
            <li>a</li> 
            <li>b</li> 
           </ul> 
          </div> 
         </div> 
        </div> 
       </body> 
      </html> 

     </frame> 

    </frameset> 
</html> 
</iframe> 

chcę odnosić się do elementu „X”. Próbowałem na kilka sposobów, ale nie mogłem znaleźć rozwiązania.

Odpowiedz

96
document.getElementById('myframe1').contentWindow.document.getElementById('x') 

Fiddle

contentWindow jest obsługiwany przez wszystkie przeglądarki, w tym starszych wersjach IE.

Należy pamiętać, że jeśli src pochodzi z innej domeny, nie będzie można uzyskać dostępu do jej zawartości z powodu wartości Same Origin Policy.

+20

Ostatnie zdanie jest bardzo ważne;) źródło kadrowanie musi być w tej samej domenie swojej strony –

+0

można rozwiązać mój problem dzięki. –

15

użycie contentDocument do osiągnięcia tego celu

var iframe = document.getElementById('iframeId'); 
var innerDoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document; 

var ulObj = innerDoc.getElementById("x"); 
Powiązane problemy