2010-07-29 5 views
1

이것을 알아 내기 위해 iframe에서들을 수있는 속성이나 이벤트가 있습니까?iframe 내부에서 부모 페이지의로드가 완료되었는지 어떻게 확인할 수 있습니까?

iframesrc과 상위 페이지가 다른 도메인에 있습니다.

+0

상위 페이지를 완벽하게 제어 할 수 있다면 당신은 명확하게해야한다, 또는 당신은이 문제를 가지고해야하는지 여부 별도 도메인의 하위 iframe에서 해결되었습니다. – donohoe

+0

상위 페이지를 제어 할 수 없습니다. iframe 내에서 완전히 해결되어야합니다. –

+0

시도해 볼 수있는 해킹이 있습니다. 부모 창 url을 iframe 내의 iframe에로드하십시오. onload 이벤트를 내부 iframe에 연결합니다. 실행되면 상위 도메인의 모든 콘텐츠가로드되어 외부 페이지도로드 된 것으로 간주 할 수 있습니다. Kludgy가 아니라 절대 안전한 것은 아니지만 가까운 거리에있을 수 있습니다. –

답변

-1

난 당신이 상위 페이지 제어 할 수 없습니다 알아,하지만 당신은 몇 가지 코드를 추가 할 호스트를 설득 할 수 있다면, 다음과 같이 할 수 있습니다 :

//OnParent Page 
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> 
<script> 
    var bReady = false; 
    $(document).ready(function() { 
     bReady = true; 
    }); 

    function isReady() { 
     return bReady; 
    } 
</script> 

//in iframe page 
<script> 
    var bReady = false; 
    while (bReady == false) { 
     bReady = window.opener.isReady(); 
    } 
</script> 
4

을 나만 경우 상위 페이지도 수정할 수 있습니다. 가능하지 않다면 XSS이고 합법적 인 방법은 없습니다.

parent.html :

... 
<body onload="theFrame.parentLoaded()"> 
... 
<iframe src="http://other.domain.com/frame.html" name="theFrame"></iframe> 
... 

frame.html : *

... 
<script type="text/javascript" language="javascript"> 
function parentLoaded(){ 
    //code here will be executed when the parent page has finished loading 
} 
</script> 
... 
+1

iframe 내부에서 부모 페이지에 javascript를 호출했다고 직접 말할 수 있습니다. iframe이있는 페이지의 소스를 본 적이 있습니까? iframe의 전체 내용이 상위 페이지 내에로드됩니다. iframe은 두 페이지가 서로 충돌하지 않도록하는 샌드 박스 역할 만합니다 (html, css 및 javascript 분리). 하지만 여전히 동일한 브라우저 창에로드되어있어 우리가 이용할 수있는 루프 구멍이 남습니다. "window.opener.a_parentFunction() 또는 top.frames [name] .a_function()"을 호출하는 것이 부모를 참조하는 것과 같습니다. –

+0

둘 중 누구도 나를 위해 일한 적이 없지만 작동하고 답을 업데이트 한 것을 찾았습니다. – qmega

관련 문제