У меня простая форма, которая находится внутри IFRAME. Когда пользователь нажимает на SUBMIT, он перенаправляется на определенную страницу на моем сервере. Функция, которую я использую для перенаправления,
header ('Location: mypage2.html'); exit ();
Но я хочу, чтобы новая страница открывалась в _top месте, а не внутри того же IFRAME, который я использую. Как я могу сказать браузеру открыть новую страницу в _top не внутри IFRAME? Заранее спасибо.
Вы не можете добиться желаемого эффекта в PHP. Это то, что вам нужно сделать с JavaScript или добавить target
атрибут в <form>
:
<form ... target="_top">
Вы можете использовать javascript для доступа к родительскому объекту. Вы можете повторить javascript на своем PHP .. поэтому ваша родительская страница имеет следующее:
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> <? }?>