【问题标题】: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,请确保他们不再停留在框架中,然后他们必须:

    &lt;base target="_top"&gt;

    【讨论】:

      【解决方案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 等。

      【讨论】:

        猜你喜欢
        • 2012-06-26
        • 1970-01-01
        • 2015-09-12
        • 1970-01-01
        • 2011-12-12
        • 1970-01-01
        • 1970-01-01
        • 2021-11-21
        • 1970-01-01
        相关资源
        最近更新 更多