18
<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>

クリック後、Firefox は [object HTMLDocument] を返します。Internet Explorer は undefined を返します。

Internet Explorer で iView 要素を選択するにはどうすればよいですか? ありがとう。

4

6 に答える 6

43

に相当するクロスブラウザcontentDocument(動作する Firefox 自体を含む)contentDocument contentWindow.document.

だから試してください:

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

contentWindowiframe のオブジェクトへの参照を取得します。windowもちろん、これは iframe の.documentDOM Document オブジェクトにすぎません。

よくまとめた記事はこちら

于 2009-09-25T14:45:29.173 に答える
12

このページから:

Mozilla は、IFrameElm.contentDocument を介して iframe のドキュメント オブジェクトにアクセスする W3C 標準をサポートしていますが、Internet Explorer では、document.frames["name"] を介してアクセスし、結果のドキュメントにアクセスする必要があります。

したがって、ブラウザを検出する必要があり、IE では代わりに次のようにします。

document.frames['iView'].document; 
于 2009-09-25T14:21:01.953 に答える
3

iframe の内容を正しく取得したいようですね。

IE7 と FF2:

var iframe = document.getElementById('iView');
alert(iframe.contentWindow.document.body.innerHTML);
于 2009-09-25T14:20:48.473 に答える
3

contentDocumentIE 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
}
于 2009-09-25T14:54:30.237 に答える
2
contentWindow.document.body.innerHTML

Internet ExplorerとFirefoxで動作していますが、

contentDocument.body.innerHTML

Firefox でのみ動作します。

于 2012-04-04T05:06:39.810 に答える
1

このようなことをします:

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

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

alert(frameDoc);

詳細については、このページを参照してください

于 2012-11-08T20:40:25.400 に答える