2011-10-20 22 views
5

私は以下のような要素をドキュメント内に持っていますが、iframe要素をdocument.getElementById('iframe_id')で取得できますが、このiframe内の要素を取得する方法はありますか?私はiframeElement.contentWindowを試しましたが、返されたDOMWindowにはプロパティがありません。 iframeElement.docuemntiframeElement.contentDocumentも試しましたが、どちらも未定義です。どうすれば入手できますか?私は実験で最新のChromeを使用しています。ここでJavascriptでiframe要素内の要素を取得する方法は?

iframe要素

<iframe id='iframe_id'> 
<html> 
<body>many content here</body> 
</html> 
</iframe> 
+2

は同じページのiframe内のページですか?もしそうでなければ、クロムはおそらくあなたに他のDOMへのアクセスを与えません。 – Tetaxa

+0

@Tetaxa、iframeのドメインをチェックする方法は?彼らが別のドメインから来ている可能性は非常に高いです。 – Thomson

+0

URLの最初の部分。ページが同じサーバー上にある場合は、問題なく使用できます。 – Tetaxa

答えて

5

でアクセスすることができるはずですそれを調べるスクリプト。 SAME ORIGIN

この場合、このコードはコンテンツを表示します。あなたは、通常のHTMLページ

Demoに通常のスクリプトからのiframeにアクセスすることはできません - - いない場合はIE8、クロム13とFX6

function showIframeContent(id) { 
    var iframe = document.getElementById(id); 
    try { 
     var doc = (iframe.contentDocument)? iframe.contentDocument: iframe.contentWindow.document; 
     alert(doc.body.innerHTML); 
    } 
    catch(e) { 
     alert(e.message); 
    } 
    return false; 
} 


<iframe id='iframe_id1' src="javascript:parent.somehtml()"> </iframe> 
<br/> 
<a href="#" onclick="return showIframeContent('iframe_id1')">Show</a> 
<hr/> 

<iframe id='iframe_id2' src="http://plungjan.name/"> </iframe> 
<br/> 
<a href="#" onclick="return showIframeContent('iframe_id2')">Show</a> 
<hr/> 
+0

上記のサンプルHTMLは、Chromeの下部にあるElementsウィンドウから抜粋(簡略化)したものです。これは、iframe内に完全なhtmlがあることを示しています。これがUIで偽であることを意味しますか? – Thomson

+0

はい。とにかく、ページが同じサーバーからのものであれば、私のコードは動作します。 – mplungjan

+0

まだ 'doc'は未定義ですが、非常に奇妙です。 – Thomson

0

は、コンテンツが同じプロトコル、ドメインとポート番号を持っている場合のみ、インラインフレーム内のコンテンツを調べることができますあなたはdocument.getElementById('yourIFrame').document.getElementById('yourElement')

4

でテストした:

var iframe = document.getElementById('iframe_id'); 

取得するにはあなたが使用できるコンテンツ文書:

var contDoc = iframe.contentDocument || iframe.contentWindow.document; 

次に、あなたの要素を検索することができますidでiframeを呼び出します。

+0

これはうまくいくはずです。しかし、私はあなたの2つのステートメントを実行した後、contDocは未定義です。返されたiframeは正しいと思われます。 – Thomson

+1

@Thomson:iframeソースが別のドメインに設定されていなければ動作します。 –

+0

_Uncaught DOMExceptionが発生しました: "http://example.com"の原点を持つフレームがクロスオリジンフレームにアクセスできないようブロックしました。 –

関連する問題