我有一个简单的表格,它在IFRAME中。当用户单击SUBMIT时,它会重定向到我服务器上的特定页面。我用于重定向的函数是
header ('Location: mypage2.html');
exit ();
但是我希望新页面在_top位置打开,而不是在我使用的同一个IFRAME中打开。如何告诉浏览器在_top中打开新页面而不是在IFRAME中? 提前谢谢。
答案 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']) ?>
祝一切顺利!