2009-09-25 11 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> 

Po kliknięciu Firefox zwraca [object HTMLDocument]. Program Internet Explorer zwraca wartość undefined.Błąd getElementById.contentDocument w IE

Jak wybrać element iView w przeglądarce Internet Explorer? Dzięki.

+4

@Mauris: on jest uprzejmy, i zwróciła się zaledwie 10 pytań. Będzie miał czas, by nauczyć się zasad tutaj. Przedstaw te komentarze osobom, które zadały ponad 100 pytań i nigdy nie zaakceptowały anser lub odpowiedziały na pytanie. – voyager

+0

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

+1

Przepraszam, nie wiem, że ten system ma funkcję "akceptuj", dzięki:) –

Odpowiedz

10

Od this page:

Mozilla obsługuje standard W3C dostępu iframe Document Object poprzez IFrameElm.contentDocument, natomiast Internet Explorer wymaga, aby uzyskać do niego dostęp za pośrednictwem dokumentu. ramki ["nazwa"], a następnie uzyskać dostęp do wynikowego dokumentu.

Więc trzeba wykryć przeglądarkę i na IE zrobić coś takiego zamiast:

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

Wygląda na to, że chcesz uzyskać zawartość ramki iframe?

IE7 i FF2:

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

Równowartość cross-browser do contentDocument (w tym samym Firefoksie, gdzie contentDocumentdokłada pracy) jest contentWindow.document .

Więc spróbuj:

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

contentWindow dostaje odniesienie do iframe za window obiektu i oczywiście .document jest tylko obiekt DOM dokumentu dla iframe.

.

+1

pracował dla mnie, aby rozwiązać mój problem z IE7. nowsze wersje IE obsługują contentDocument. –

3

wykrywanie Zastosowanie funkcji, jak contentDocument jest obsługiwana w IE 8:

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 

pracuje dla mnie w programie Internet Explorer i Firefox, natomiast

contentDocument.body.innerHTML 

będzie działać tylko w Firefoksie.

1

zrobić coś takiego:

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

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

alert(frameDoc); 

Zobacz this page więcej szczegółów

Powiązane problemy