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

Après avoir cliqué, Firefox retourne [objet HTMLDocument]. Internet Explorer renvoie undefined.erreur getElementById.contentDocument dans IE

Comment puis-je sélectionner l'élément iView avec Internet Explorer? Merci.

+4

@Mauris: il est d'être poli, et a demandé à 10 questions. Il aura le temps d'apprendre les règles ici. Faites ces commentaires à ceux qui ont posé plus de 100 questions et qui n'ont jamais accepté une réponse ou répondu à une question. – voyager

+0

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

+1

Désolé, je ne sais pas que ce système a 'accepter' la fonctionnalité, merci:) –

Répondre

10

De this page:

Mozilla prend en charge la norme W3C d'accéder à l'objet document de iframe par IFrameElm.contentDocument, tandis qu'Internet Explorer vous oblige à y accéder par le document. frames ["nom"], puis accédez au document résultant.

Vous avez donc besoin de détecter le navigateur et IE faire quelque chose comme ceci:

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

Vous semblez vouloir récupérer le contenu de l'iframe?

IE7 et FF2:

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

L'équivalent cross-navigateur pour contentDocument (y compris Firefox lui-même, où contentDocument-t travail) est contentWindow.document .

Donc, essayez:

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

contentWindow vous obtient une référence à l'objet window de l'iframe, et bien sûr .document est juste l'objet du document DOM pour l'iframe.

.

+1

a travaillé pour moi pour résoudre mon problème avec IE7. les nouvelles versions d'IE semblent soutenir contentDocument. –

3

Utiliser la détection de fonction, comme contentDocument est pris en charge dans 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 

travaille pour moi dans Internet Explorer et Firefox, alors que

contentDocument.body.innerHTML 

ne fonctionnera que dans Firefox.

1

quelque chose comme ça:

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

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

alert(frameDoc); 

Voir this page pour plus de détails