이것을 알아 내기 위해 iframe
에서들을 수있는 속성이나 이벤트가 있습니까?iframe 내부에서 부모 페이지의로드가 완료되었는지 어떻게 확인할 수 있습니까?
iframe
src
과 상위 페이지가 다른 도메인에 있습니다.
이것을 알아 내기 위해 iframe
에서들을 수있는 속성이나 이벤트가 있습니까?iframe 내부에서 부모 페이지의로드가 완료되었는지 어떻게 확인할 수 있습니까?
iframe
src
과 상위 페이지가 다른 도메인에 있습니다.
난 당신이 상위 페이지 제어 할 수 없습니다 알아,하지만 당신은 몇 가지 코드를 추가 할 호스트를 설득 할 수 있다면, 다음과 같이 할 수 있습니다 :
//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>
을 나만 경우 상위 페이지도 수정할 수 있습니다. 가능하지 않다면 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>
...
iframe 내부에서 부모 페이지에 javascript를 호출했다고 직접 말할 수 있습니다. iframe이있는 페이지의 소스를 본 적이 있습니까? iframe의 전체 내용이 상위 페이지 내에로드됩니다. iframe은 두 페이지가 서로 충돌하지 않도록하는 샌드 박스 역할 만합니다 (html, css 및 javascript 분리). 하지만 여전히 동일한 브라우저 창에로드되어있어 우리가 이용할 수있는 루프 구멍이 남습니다. "window.opener.a_parentFunction() 또는 top.frames [name] .a_function()"을 호출하는 것이 부모를 참조하는 것과 같습니다. –
둘 중 누구도 나를 위해 일한 적이 없지만 작동하고 답을 업데이트 한 것을 찾았습니다. – qmega
상위 페이지를 완벽하게 제어 할 수 있다면 당신은 명확하게해야한다, 또는 당신은이 문제를 가지고해야하는지 여부 별도 도메인의 하위 iframe에서 해결되었습니다. – donohoe
상위 페이지를 제어 할 수 없습니다. iframe 내에서 완전히 해결되어야합니다. –
시도해 볼 수있는 해킹이 있습니다. 부모 창 url을 iframe 내의 iframe에로드하십시오. onload 이벤트를 내부 iframe에 연결합니다. 실행되면 상위 도메인의 모든 콘텐츠가로드되어 외부 페이지도로드 된 것으로 간주 할 수 있습니다. Kludgy가 아니라 절대 안전한 것은 아니지만 가까운 거리에있을 수 있습니다. –