重定向服务器端加载iframe内部

时间:2013-09-20 04:57:46

标签: javascript html redirect iframe

我有一个iframe。单击iframe内的特定链接时,将发生错误验证,服务器端以及随后从服务器端发生重定向。现在,重定向导致页面加载到iframe中。 有没有办法让重定向发生在父页面上?我知道如果它是客户端验证可以做到这一点。但这是服务器端验证,重定向命令来自服务器。在重定向中,我还加载了一个错误属性,该属性显示为错误div。甚至这会加载到iframe中。 (带有错误div的iframe内的iframe)。

4 个答案:

答案 0 :(得分:1)

以下是@mavrosxristoforos在评论中提到的代码。用来代替PHP header()或您可能使用的任何重定向。

<script type="text/javascript">
window.parent.location.href= "http://your-redirect-url-here";
</script>

答案 1 :(得分:0)

只有在使用相同的协议时,您才能在主窗口和iframe之间进行通信!

这样做的“正确”方法是使用postMessage。您可以找到两个使用示例herehere。这么长的路要走。

快速而肮脏:
在下面的示例中,外部窗口有一个名为change()的JS函数,每次重新加载iframe时都会调用该函数。您可以使用它来检测仅在发生错误时显示的div - 然后重定向。以下示例重定向到ycombinator网站。您可以查看here

<html>
   <head>
   <script type="text/javascript">
     function change(obj){
       var iframe = document.getElementById('iFrm');
       var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
       var obj = innerDoc.getElementById('completed');
       if(obj !== undefined && obj !== null){
           window.location = "https://news.ycombinator.com/";
       }
     }
     </script>         
        </head>
        <body>
         <div class="keuzeDiv">
                <iframe id="iFrm"  src="https://sandbox.plimus.com/jsp/buynow.jsp?contractId=2138644" onLoad="change();" width="100%" height="100%"></iframe>
                </div>
        </body>
</html>

答案 2 :(得分:0)

如果您不想更改服务器的输出但是正在寻找快速而肮脏的解决方案,那么您可以执行以下操作:

请参阅:iFrame src change event detection?

您可以检查您重定向到的页面的位置(如果这很重要),以及当IFRAME第二次更改位置(因为第一次加载IFRAME时的第一次) )您可以将主窗口重定向到感兴趣的页面。

(我想我们也可以问一个问题:为什么IFRAME而不是使用Ajax请求来验证输入?)

答案 3 :(得分:0)

  

说A是你的父页面,B是框架内的子页面。

     服务器验证失败时

不会重定向到页面A但是B或错误页面C!

如果你能够进行哈希交换

,我认为这更像是一种黑客行为
  • 当服务器验证失败时,重定向到页面B并在网址的最后添加了/ #notvalid
  • 在父页面A中监听携带B的iframe的加载事件,并检查iframe的src是否在结尾处有“#notvalid”。如果是,请在父页面中显示错误div!