IFRAME 中的 PHP“标头(位置)”,加载到 _top 位置?
Posted
技术标签:
【中文标题】IFRAME 中的 PHP“标头(位置)”,加载到 _top 位置?【英文标题】:PHP "header (location)" inside IFRAME, to load in _top location? 【发布时间】:2011-02-28 10:41:48 【问题描述】:我有一个简单的表格,它位于 IFRAME 中。当用户单击提交时,它会重定向到我服务器上的特定页面。我用于重定向的功能是
header ('Location: mypage2.html');
exit ();
但我希望新页面在 _top 位置打开,而不是在我使用的同一个 IFRAME 内。如何告诉浏览器在 _top 而不是 IFRAME 内打开新页面? 提前致谢。
【问题讨论】:
如果您无法访问 FORM 元素,也无法访问 PARENT 页面的代码,该怎么办? 【参考方案1】:您无法在 php 中达到预期的效果。这是您必须通过 javascript 执行的操作,或者将 target
属性添加到 <form>
:
<form ... target="_top">
【讨论】:
+1 好的解决方案。但是,如果您想在发生错误时将用户重定向到原始页面,它会打乱任何服务器端错误检查。 @jeroen 我在我的简单 .html 页面中使用 javascript 进行了字段检查。如果字段为空,我不需要重定向。我使用警报:)【参考方案2】:您可以使用 javascript 访问父级。你可以在你的 PHP 中回显 javascript .. 所以你的父页面有这个:
function changeURL( url )
document.location = url;
在你的 php 脚本中,你回显
<script>
parent.changeURL('mypage2.html' );
</script>
您不能调用 parent.document.location 的原因是因为它是只读的 - 您必须在父级上有一个可用的函数才能执行此操作。
【讨论】:
【参考方案3】:直接在 PHP 中重定向父页面而不是 iframe 的简单方法:
echo "<script>top.window.location = '/mynewpage.php'</script>";
die;
die;
不一定是必需的,但最好“以防万一”以防止脚本继续执行,例如,如果用户浏览器中禁用了 javascript。
【讨论】:
【参考方案4】:我们可以像这样使用javascript:
target.window.location='locationpage.html';
top.window.location='mypage2.html';
【讨论】:
【参考方案5】:最好和最简单的做法是使用表单目标元素
<form action="..." target="_top">
<form action="..." target="_parent">
任何一个目标参数都可以正常工作
【讨论】:
【参考方案6】:您可以使用<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>
<? ?>
【讨论】:
【参考方案7】:在要加载的页面_top中,在header中添加如下代码
<script type="text/javascript">
if (top != self) top.location.href = location.href;
</script>
【讨论】:
【参考方案8】:对于 CakePHP 4,要重定向您的父页面,只需在 iframe 的链接中添加选项 'target'=>'_top'
:
例子:
<?= $this->Html->link(__('Redirect Parent'), ['controller' => 'Users', 'action' => 'view'], ['target'=>'_top']) ?>
一切顺利!
【讨论】:
以上是关于IFRAME 中的 PHP“标头(位置)”,加载到 _top 位置?的主要内容,如果未能解决你的问题,请参考以下文章
php - 标头位置重定向:https 到 https,http 到 http