Question

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

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

Était-ce utile?

La solution

De cette 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 via document.frames [ « nom »], puis accéder au document résultant.

Vous devez détecter le navigateur et IE faire quelque chose comme ceci:

document.frames['iView'].document; 

Autres conseils

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

Donc, essayez:

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

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

Voici un article qui résume mieux .

Vous semblez vouloir obtenir le contenu du droit iframe?

IE7 et FF2:

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

Utilisation détection de caractéristiques, comme contentDocument est supporté 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
}
contentWindow.document.body.innerHTML

travaille pour moi dans Internet Explorer et Firefox, alors que

contentDocument.body.innerHTML

ne fonctionne que dans Firefox.

Faites quelque chose comme ceci:

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

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

alert(frameDoc);

Voir cette page pour plus de détails

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top