2012-02-18 53 views
5

我想在iframe中取div的内容,删除iframe,并只显示div。我不明白为什么这不起作用 - 我不知道是否使用contentWindow或contentDocument ..任何指针?谢谢!如何在iframe中选择div?

我有一个DIV ID为 “IFRAME” 内的ID为 “embedded_article” 的iframe,

<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 2012-02-18 01:24:14

+0

@tekknolagi只要框架共享相同的域,他所要做的就是允许。这只是不正确的做法。 'document.getElementById('iframe')'在外部窗口中返回一个'iframe'元素,而不是框架内的'document'或'window'对象,所以它没有子元素。 – 2012-02-18 01:25:52

+1

啊,好吧。谢谢澄清,@GGG – tekknolagi 2012-02-18 04:40:30

回答

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时,您希望在主窗口中使用属于您的框架的windowdocument,而不是document。其余的应该是自我解释的。

2

去一个iFrame里面的DIV,你可以尝试这样的事情

 var div = document.getElementById("YourIFrameID").contentWindow.document.body.getElementById("YOUR_DIV_ID") 
+0

这是行不通的,只是说第一个document.getElementById(...)是空的 – 2013-03-18 13:43:39