无论是否在iframe中,重定向都应该有效。

时间:2013-03-05 06:23:33

标签: php javascript html

我有一个login.php页面,通常在灯箱式iframe中查看。用户输入姓名和电子邮件,表单在iframe中提交给自己(login.php),如果登录成功,我会使用以下方法将它们重定向到所需的页面:

echo "
    <script>
        parent.changeURL('{$returnlink}' );
    </script>
";              
exit;

在父页面中,<head>部分是使此重定向工作的功能:

<script>
    function changeURL( url ) {
        document.location = url;
    }
</script>

但是,如果login.php页面是在父窗口本身中加载的,则灯箱式iframe中的不是,它被设计为加载(不是预期的,但可能会发生),那么这个重定向函数就会中断,因为在这种情况下没有父节点,实际上它应该是更改自己的URL,而不是父节点。

是否有更耐用的php或javascript重定向代码?或者如果它不在iframe中,可以将其更改为自我更正?

3 个答案:

答案 0 :(得分:0)

尝试

if(parent)parent.window.location=url;
else window.location=url;

答案 1 :(得分:0)

<script>
  if(parent)
    parent.changeUrl('{$returnlink}');
</script>

答案 2 :(得分:0)

使用@Tapas Pal,@ Sumit Bijvanai和@yourdeveloperfriend的建议,我现在正在使用的解决方案是:

<script>
    if(parent) {
        parent.window.location='{$returnlink}';
    }
    else {
        window.location='{$returnlink}';
    }       
</script>