2008-10-11 103 views
1

我有一个HTML页面(称为welcome.html),其中包含一个iframe到页面,我无法控制(比如app.html)。用户使用iframe中的应用程序执行一些操作,然后单击提交。一旦他们这样做,他们将被带到一个新的页面(称为thanks.jsp),该页面加载在iframe中。有一种方法,我可以强制thanks.jsp加载全帧,而不是iframe一旦提交被点击?请记住,我无法控制提交按钮或app.html背后的逻辑。不过,我确实可以控制welcome.html和thanks.jsp。如果可能的话,我想坚持使用HTML和/或JavaScript。先谢谢你。强制iframe加载全帧

回答

5

你可能想要使用一个framebuster,如果它失败的话还有一个基准目标。

第一:

如果通过POST请求,请求thanks.jsp - 重定向所以你目前的页面作为响应于获取请求。

然后:

包括framebuster的JavaScript:

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

最后:

如果用户不启用JavaScript,确保他们不会停留在框架不再那么他们必须:

<base target="_top">
2

thanks.jsp你可以把以下JS:

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

这将工作前提是你得thanks.jsp在同一台服务器包含帧的原始页面上,由于same origin policy

上面的代码检查页面你,然后在页面的一个它的执行上(thanks.jsp)的URL - 如果他们不匹配你发送到thanks.jsp网址。当thanks.jsp是一个静态页面时,此方法可以正常工作,但不会在它后面传递postdata等。