web-dev-qa-db-ja.com

iframeのcontentDocument

「contentDocument」はiframe(または古い「frame」要素)に対して正確に何を表していますか? 「html」要素または「body」要素と同等ですか?それは何の用途ですか?また、このプロパティはすべてのブラウザでサポートされていますか?

12
testndtv

w3.org

dOMレベル2で導入されたドキュメントタイプのcontentDocument、読み取り専用、このフレームに含まれるドキュメント(存在する場合はそれが使用可能)、それ以外の場合はnull。

[〜#〜] mdn [〜#〜]

スクリプトは、DOM iframe要素から、contentWindowプロパティを介してインクルードされたHTMLページのウィンドウオブジェクトにアクセスできます。 contentDocumentプロパティはiframe内のドキュメント要素を参照します(これはcontentWindow.documentと同等です)が、IE8より前のバージョンのInternetExplorerではサポートされていません。

msdn

このページまたはフレームに含まれるドキュメント
このプロパティはWindowsInternet Explorer8の新機能です

したがって、body要素のinnerHTMLを取得するには、

iframe.contentDocument.getElementsByTagName("body")[0]

または

iframe.contentDocument.body

今日のブラウザで。

19
mplungjan

contentDocumentは、iframeまたはフレームのDocumentオブジェクトを取得するための標準化された方法です。これは、iframe内で実行されているJavaScriptがdocumentを介してアクセスするのと同じオブジェクトです。

他の回答に記載されているように、IEはバージョン8までサポートしていませんでしたが、Windowを介したiframeのcontentWindowオブジェクトへのアクセスはサポートしていました。クロスブラウザしたがって、iframeの<body>要素を取得する方法は次のとおりです。

var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
var iframeBody = iframeDoc.body;

Iframeがメインドキュメントと同じドメインから提供されていない場合、ブラウザのセキュリティ制限により、この方法またはその他の方法でドキュメントオブジェクトにアクセスできないことに注意してください。

12
Tim Down

contentDocumentは、iframe(DOMオブジェクト)のドキュメントを表します。ドキュメントには独自のプロパティがあるため、htmlと同等ではありませんが、次のように入力すると、

myFrame.contentDocument.body 

あなたは体自体を手に入れるでしょう。

わずかな変更を加えて、すべてのブラウザでサポートされています。InternetExplorerで使用する場合

myFrame.contentWindow.document

楽しんで、ニリ

2
Nili