2008-10-11 5 views
1

제어 할 수없는 페이지에 iframe이 포함 된 HTML 페이지 (예 : welcome.html)가 있습니다 (예 : app.html). 사용자는 iframe 내의 앱을 사용하여 일부 작업을 수행하고 제출을 클릭합니다. 일단이 작업을 수행하면 iframe 내에서로드되는 새 페이지 (thanks.jsp)로 이동합니다. 내가 제출 한 클릭 한 번 thanks.jsp 전체 프레임 및 iframe 아닌로드 할 수있는 방법이 있나요? 기억하십시오. Submit 버튼이나 app.html의 로직을 제어 할 수 없습니다. 그러나 나는 welcome.html과 thanks.jsp를 제어 할 수 있습니다. 가능한 경우 HTML 및/또는 JavaScript를 사용하고 싶습니다. 미리 감사드립니다.전체 프레임을로드하려면 iframe을 강제 실행하십시오.

답변

5

실패 할 경우를 대비해 기본 대상과 함께 프레임 버스터를 사용하고 싶을 것입니다.

첫째 : thanks.jsp 게시물 요청을 통해 요청

경우 - 당신이 GET 요청에 대한 응답으로 페이지를 제공하므로 리디렉션합니다.

그런 다음 :

자바 스크립트 framebuster 포함 : 마지막으로

<script type="text/javascript"> 
    if (self != top) { top.location.replace(location); } 
</script> 

: 사용자가 만들 자바 스크립트를 사용할 수없는 경우

확실히 그들은 더 이상 프레임에 유지하지 않습니다 그들은 다음과 같이해야합니다 :

<base target="_top">
2

thanks.jsp에 넣을 수 있습니다. 다음 JS는 :

// Parent window not the same as this one 
if (self !=top) 
{ 
    top.location.href = self.location.href; 
} 

이것은 당신이 때문에 same origin policy에 프레임이 포함 된 원본 페이지와 같은 서버에 thanks.jsp을 가지고 제공 작동합니다.

위의 코드는 현재 실행중인 페이지의 URL을 확인한 다음 실행중인 페이지 중 하나 (thanks.jsp) - 일치하지 않으면 thanks.jsp URL로 전송됩니다. 이 방법은 thanks.jsp이 정적 인 페이지 일 때 제대로 작동하지만 이후 데이터 등을 전달하지는 않습니다.

관련 문제