2009-09-25 10 views
17
<html> 
    <script type="text/javascript"> 
     function func() { 
     alert(document.getElementById('iView').contentDocument); 
     }  
    </script> 
    <body> 
     <iframe id="iView" style="width:200px;height:200px;"></iframe> 
     <a href="#" onclick="func();">click</a> 
    </body> 
</html> 

Nach dem Klick, Firefox gibt [Objekt HTMLDocument]. Internet Explorer gibt undefined zurück.getElementById.contentDocument Fehler in IE

Wie kann ich das iView-Element mit Internet Explorer auswählen? Vielen Dank.

+4

@Mauris: Er ist höflich und hat nur 10 Fragen gestellt. Er wird Zeit haben, die Regeln hier zu lernen. Mache diese Kommentare jenen Leuten, die über 100 Fragen gestellt haben und niemals einen Anser angenommen haben oder eine Frage beantwortet haben. – voyager

+0

http://meta.stackexchange.com/questions/23475/should-questions-with-no-accepted-answers-be-punished-after-awhile – voyager

+1

Sorry, weiß nicht, dass dieses System 'akzeptieren' Funktionalität hat, danke:) –

Antwort

10

Von this page:

Mozilla für den Zugriff auf iframe des Dokumentobjekts durch IFrameElm.contentDocument den W3C-Standard unterstützt, während Internet Explorer erfordert, dass Sie es durch Dokument zuzugreifen. Frames ["Name"] und dann auf das resultierende Dokument zugreifen.

So müssen Sie den Browser erkennen und auf IE etwas tun, wie Sie stattdessen:

document.frames['iView'].document; 
3

Sie scheinen den Inhalt des iframe richtig zu bekommen?

IE7 und FF2:

var iframe = document.getElementById('iView'); 
alert(iframe.contentWindow.document.body.innerHTML); 
42

Die Cross-Browser entspricht contentDocument (einschließlich Firefox selbst, wo contentDocumenttut Arbeit) ist contentWindow.document .

So versuchen:

alert(document.getElementById('iView').contentWindow.document); 

contentWindow bekommt man einen Verweis auf das window Objekt iframe, und natürlich .document ist nur das DOM Document-Objekt für den iframe.

.

+1

arbeitete für mich, um mein Problem mit IE7 zu lösen. neuere IE-Versionen scheinen contentDocument zu unterstützen. –

3

Verwenden Feature-Erkennung, wie contentDocument in IE 8 unterstützt wird:

var iframe = document.getElementById("iView"); 
var iframeDocument = null; 
if (iframe.contentDocument) { 
    iframeDocument = iframe.contentDocument; 
} else if (iframe.contentWindow) { 
    // for IE 5.5, 6 and 7: 
    iframeDocument = iframe.contentWindow.document; 
} 
if (!!iframeDocument) { 
    // do things with the iframe's document object 
} else { 
    // this browser doesn't seem to support the iframe document object 
} 
2
contentWindow.document.body.innerHTML 

ist für mich arbeiten in Internet Explorer und Firefox, während

contentDocument.body.innerHTML 

nur in Firefox arbeiten.

1

etwas tun:

var myFrame = document.getElementById('iView'); 
var frameDoc = myFrame.contentDocument || myFrame.contentWindow; 

if (frameDoc.document){ 
    frameDoc = frameDoc.document; 
} 

alert(frameDoc); 

Siehe this page für weitere Details