IFRAME内にある単純なフォームがあります。ユーザーが[送信]をクリックすると、サーバー上の特定のページにリダイレクトされます。リダイレクトに使用する関数は
header ('Location: mypage2.html');
exit ();
しかし、新しいページを、使用しているのと同じIFRAME内ではなく、_topの場所に開くようにします。 IFRAME内ではなく、_topで新しいページを開くようブラウザに指示するにはどうすればよいですか?前もって感謝します。
PHPで目的の効果を達成することはできません。これは、JavaScriptから行うか、target
属性を<form>
に追加する必要があります。
<form ... target="_top">
Javascriptを使用して親にアクセスできます。 PHPでjavascriptをエコーアウトできます。したがって、親ページには次のようになります。
function changeURL( url ) {
document.location = url;
}
あなたのPHPスクリプトでは、エコーします
<script>
parent.changeURL('mypage2.html' );
</script>
Parent.document.locationを呼び出せない理由は、読み取り専用であるためです。それを行うには、親で使用可能な関数を用意する必要があります。
PHPで直接iframeではなく親ページをリダイレクトする簡単な方法:
echo "<script>top.window.location = '/mynewpage.php'</script>";
die;
die;
は必ずしも必要ではありませんが、たとえば「javascript」がユーザーのブラウザで無効になっている場合など、スクリプトがそれ以上続行しないようにするために「万が一に」良い方法です。
次のようなjavascriptを使用できます。
target.window.location='locationpage.html';
top.window.location='mypage2.html';
最善かつ最も簡単なことは、フォームターゲット要素を使用することです
<form action="..." target="_top">
<form action="..." target="_parent">
どちらのターゲットパラメーターも正常に機能します
<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>
<? }?>
_topに読み込むページで、ヘッダーに次のコードを追加します
<script type="text/javascript">
if (top != self) top.location.href = location.href;
</script>