2012-02-18 92 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