2012-02-18 9 views
5

iframe内のdivの内容を取り出し、iframeを削除し、divのみを表示しようとしています。私はこれがうまくいかない理由を理解できません - 私はcontentWindowまたはcontentDocumentを使用するかどうか分かりません。ありがとう!iframe内のdivを選択するにはどうすればよいですか?

idのiframeの "embedded_article"、

<script type="text/javascript"> 

function getContentFromIframe() 

{  
var parent = document.getElementById('iframe'); 
var child = document.getElementById('embedded_article'); 

var oldContent = child.contentWindow.document.innerHTML; 

var newContent = child.contentWindow.document.getElementById('ec-article').innerHTML; 

    document.getElementById('iframe').removeChild(document.getElementById('embedded_article')); 


parent.innerHTML = newContent;  

} 
</script> 
+0

ブラウザでは安全ではないため、一般的には許可されていません。 – tekknolagi

+0

@tekknolagi彼がやっていることは、フレームが同じドメインを共有している限り許されています。これは正しい方法ではありません。 'document.getElementById( 'iframe')'はフレーム内の 'document'や' window'オブジェクトではなく、外側のウィンドウに 'iframe'要素を返します。そのため、子はありません。 –

+1

ああ、大丈夫です。明らかにしていただきありがとうございます、@GGG – tekknolagi

答えて

2

あなたの例:

document.getElementById('iframe').removeChild(document.getElementById('embedded_article')); 

のようなものになります

var element = frames['iframe'].document.getElementById('embedded_article'); 

element.parentNode.removeChild(element); 

window.frames['yourFrameId']は、あなたのフレームに関連付けられたオブジェクトであると評価されます(window)。 document.getElementByIdを使用している場合、メインウィンドウのdocumentではなく、windowに属するdocumentを使用します。残りは自明でなければなりません。

2

は、あなたがこの

 var div = document.getElementById("YourIFrameID").contentWindow.document.body.getElementById("YOUR_DIV_ID") 
ような何かを試すことができiFrameの内側のdivを取得することの中に、私は、ID "IFRAME" で1つのdiv要素を持っています
+0

これは動作していない、ちょうど最初のdocument.getElementById(...)が空であることを言う –

関連する問題