IFRAME中的PHP“标题(位置)”,加载到_top位置?

时间:2010-06-06 18:28:03

标签: php iframe header location

我有一个简单的表格,它在IFRAME中。当用户单击SUBMIT时,它会重定向到我服务器上的特定页面。我用于重定向的函数是

 header ('Location: mypage2.html');
exit ();

但是我希望新页面在_top位置打开,而不是在我使用的同一个IFRAME中打开。如何告诉浏览器在_top中打开新页面而不是在IFRAME中? 提前谢谢。

8 个答案:

答案 0 :(得分:29)

您无法在PHP中实现所需的效果。这是您必须通过JavaScript执行的操作或将target属性添加到<form>

<form ... target="_top">

答案 1 :(得分:11)

您可以使用javascript访问父级。你可以在你的PHP中回应javascript ..所以你的父页面有这个:

function changeURL( url ) {
    document.location = url;
}

并在您的php脚本中,您回显

<script>
   parent.changeURL('mypage2.html' );
</script>

您无法调用parent.document.location的原因是因为它是只读的 - 您必须在父级上有一个可用的函数才能执行此操作。

答案 2 :(得分:8)

直接在PHP中重定向父页面而不是iframe的简单方法:

echo "<script>top.window.location = '/mynewpage.php'</script>";
die;

die;并不一定是必要的,但它是好的&#34;以防万一&#34;防止脚本继续进行,例如,如果在用户的浏览器中禁用了javascript。

答案 3 :(得分:4)

我们可以使用这样的javascript:

target.window.location='locationpage.html';
top.window.location='mypage2.html';

答案 4 :(得分:1)

最好也是最简单的方法是使用表单目标元素

<form action="..." target="_top"> 
<form action="..." target="_parent">

任一目标参数都可以正常工作

答案 5 :(得分:1)

您可以使用<a href="pagename.php?Break=Y">Break Out</a>链接到该页面,也可以使用代码

<?php header("Location: pagename.php?Break=Y"); ?>

然后使用

在页面标题中使用以下代码
if(isset($_GET['Break'])) // 
    {
    $BreakFrame = true;
    $BreakToPage = "pagename.php";

    }

<script language="JavaScript" type="text/javascript">
function changeURL( url ) {
    document.location = url;
}
</script>

<?php if($BreakFrame) { ?>

<script language="JavaScript" type="text/javascript">
parent.changeURL('<?=$BreakToPage?>' );
</script>

<? }?>

答案 6 :(得分:0)

在您要在_top中加载的页面中,在标题中添加以下代码

<script type="text/javascript">
if (top != self) top.location.href = location.href;
</script>

答案 7 :(得分:0)

对于CakePHP 4,要重定向您的父页面,只需在iframe的链接中添加选项'target'=>'_top'

示例:

 <?= $this->Html->link(__('Redirect Parent'), ['controller' => 'Users', 'action' => 'view'], ['target'=>'_top']) ?>

祝一切顺利!