【问题标题】:Force iframe to Load Full Frame强制 iframe 加载全帧
【发布时间】:2010-09-16 16:46:12
【问题描述】:
我有一个 HTML 页面(比如welcome.html),其中包含一个指向我无法控制的页面的 iframe(比如 app.html)。用户在 iframe 中使用应用程序执行一些操作并单击提交。一旦他们这样做了,他们就会被带到一个新页面(比如thanks.jsp),该页面在iframe中加载。有没有一种方法可以强制thanks.jsp在单击提交后加载全帧而不是iframe?请记住,我无法控制提交按钮或 app.html 背后的逻辑。不过,我确实可以控制welcome.html 和thanks.jsp。如果可能的话,我想坚持使用 HTML 和/或 JavaScript。提前谢谢你。
【问题讨论】:
标签:
javascript
html
iframe
frame
【解决方案1】:
您可能希望使用带有基本目标的 framebuster,以防万一失败。
第一:
如果 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。
上面的代码检查您所在页面的 url,然后检查它正在执行的页面之一 (thanks.jsp) - 如果它们不匹配,您将被发送到 thanks.jsp url。当thanks.jsp 是静态页面时,此方法可以正常工作,但不会携带 postdata 等。