重定向应该工作,无论是否在iframe


Redirect should work whether in iframe or not.

我有一个login.php页面,通常在一个lightbox样式的iframe中查看。用户输入姓名和电子邮件,表单在iframe中提交给自己(login.php),如果登录成功,则使用

将它们重定向到所需的页面:
echo "
    <script>
        parent.changeURL('{$returnlink}' );
    </script>
";              
exit;

在父页面的<head>节中是使此重定向工作的函数:

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

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

是否有更持久的php或javascript重定向代码?或者一种方法来改变它的自我纠正,如果它不是在一个框架?

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

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

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

Try

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