2012-02-18 2 views
5

iframe에서 div의 내용을 가져 와서 iframe을 삭제하고 div 만 표시하려고합니다. 이것이 작동하지 않는 이유를 알아낼 수 없습니다. contentWindow 또는 contentDocument 중 어떤 것을 사용할지 확실하지 않습니다. 포인터가 있습니까? 감사! ID가 "embedded_article"와 iframe이,iframe에서 div를 선택하는 방법은 무엇입니까?

<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']은 프레임과 관련된 객체로 평가됩니다. document.getElementById을 사용할 때 document은 프레임의 window에 속하지만 document은 기본 창에 속하지 않습니다. 나머지는 자기 설명 적이어야합니다.

2

가 iframe을 내부 사업부에 도착하는 것을이

 var div = document.getElementById("YourIFrameID").contentWindow.document.body.getElementById("YOUR_DIV_ID") 
뭔가를 시도 할 수 있습니다 내

나는, ID가 "iframe이"하나 개의 사업부가

+0

이것이 작동하지 않습니다. 단지 첫 번째 document.getElementById (...)가 비어 있다고 말합니다. –

관련 문제