2017-04-19 19 views
0

2つのドキュメントがあり、そのうちの1つがiframeで埋め込まれています。私はiframe要素上のdocument.getElementById機能を使用することはできません、しかし、IFRAME内のimgタグにアクセスするには、このコードを使用しようとしている:JavaScriptのiframeでDOM要素を取得する

iframes = document.getElementsByTagName("iframe") 
spaces = iframes[0].contentWindow.document; 
spaces = spaces.getElementsByTagName("img") 
for (var i=0, max=spaces.length; i < max; i++) { 
    alert(spaces[i].innerHTML) 
} 
alert(spaces) 
var x = document.getElementById("frame"); 
var y = (x.contentWindow || x.contentDocument); 
if (y.document)y = y.document; 
alert(y.body.innerHTML) 

スペースは、[オブジェクトHTMLCollection]とyに戻り、[オブジェクトを返します。だから、HTMLDocumentの]

+0

iframeの背後にあるhtmlのようなコードを提供しようとしています – Felix

答えて

0

あなたのiframeのコンテンツと同じドメインにしている場合、あなたは、同じドメイン上にないなら、あなたは操作/ iframeのコンテンツにアクセスすることはできません

document.getElementById('my-iframe').contentWindow.document.getElementById(...) 

を使用することができますセキュリティ上の理由から。さもなければ、悪意のある人々は、Facebookや何かのように見えるiframeを投げて、他の人々の情報を盗む可能性があります。

同じドメインに属していないが、使用している両方のドメインを所有している場合は、2つのフレームの間にmessagingを設定できます。そして親を使って情報/操作のために子供にメッセージしてください。

+0

これは私にとってnullを返しています。埋め込まれたhtmlページにもYouTube動画が埋め込まれていると付け加えておきますが、私はそれにアクセスしていません。興味深いのは、 ".getElementById(" space ") '部分を削除すると[object HTMLDocument]が返されますが、それを追加するとヌルが返されます。 – ColorCodin

+0

もう少しデバッグすると、" document.getElementById my-iframe ')。contentWindow.document "オブジェクトには1つのプロパティ、場所しかありません。 – ColorCodin

関連する問題