2009-07-06 38 views

답변

268
var iframe = document.getElementById('iframeId'); 
var innerDoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document; 

좀 더 간단하게 작성할 수 있습니다. 당신이 내부 문서를 일단 당신이 당신의 현재 페이지에있는 모든 요소에 액세스하는 것처럼

, 당신은 단지 그것의 내부 같은 방법으로 액세스 할 수 있습니다. (innerDoc.getElementById ... 등)

중요 : iframe이 동일한 도메인에 있는지 확인하십시오. 그렇지 않으면 내부에 액세스 할 수 없습니다. 그것은 크로스 사이트 스크립팅 일 것입니다.

+4

멋진 대답. 당신이 할 수 있다는 것을 알고 계셨습니까? var innerDoc = iframe.contentDocument || iframe.contentWindow.document; // 더 읽기 쉽고 같은 것을 의미합니다. –

+1

예, 그 사실을 알았습니다. – geowa4

+5

저는 3 자 운영자 이상의 사람들이 혼란스러워하는 것을 보았습니다. 첫 번째 유효 값이 반환된다는 것을 모르는 것처럼 보입니다. 내가 그것을 포함하도록 대답을 편집으로 내 어깨 너머로 남자가 무슨 짓을 나에게 물었다 사실 – geowa4

4
window.parent.document.getElementById("framekit").contentWindow.CallYourFunction('pass your value') 

CallYourFunction() 페이지 내부 기능과 다른 답변의

+4

iFrame에서 함수를 호출하고 요소에 대한 참조를 가져 오지 않았습니다. –

1

아무도 나를 위해 작동하지 않았다 거기에 그 함수의 작업입니다.

var el = document.getElementById("iframeId").contentWindow.functionNameToCall(); 
3

은 iframe에 액세스하는 것을 잊지 마세요 : 그래서 요소를 검색 할 수처럼 그런 다음 해당 함수를 호출

function getElementWithinIframe() { 
    return document.getElementById('copy-sheet-form'); 
} 

: 내가 찾고 있던 객체를 반환 내 iframe을 내 함수를 만들어 결국이로드 된 후 이로드됩니다. jQuery를하지 않고 오래 된 그러나 안정적인 방법 :

<iframe src="samedomain.com/page.htm" id="iframe" onload="access()"></iframe> 

<script> 
function access() { 
    var iframe = document.getElementById("iframe"); 
    var innerDoc = iframe.contentDocument || iframe.contentWindow.document; 
    console.log(innerDoc.body); 
} 
</script>