PHP "заголовок (местоположение)" внутри IFRAME, чтобы загрузить в _top местоположение? - PullRequest
22 голосов
/ 06 июня 2010

У меня есть простая форма, которая находится внутри IFRAME. Когда пользователь нажимает кнопку SUBMIT, он перенаправляет на определенную страницу на моем сервере. Функция, которую я использую для перенаправления:

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

Но я хочу, чтобы новая страница открывалась в _top месте, а не в том же самом IFRAME, который я использую. Как я могу сказать браузеру открыть новую страницу в _top, а не внутри IFRAME? Заранее спасибо.

Ответы [ 7 ]

30 голосов
/ 06 июня 2010

Вы не можете достичь желаемого эффекта в PHP. Это то, что вам нужно сделать из JavaScript или добавить атрибут target в <form>:

<form ... target="_top">
11 голосов
/ 06 июня 2010

Вы можете использовать JavaScript для доступа к родителю. Вы можете повторить JavaScript в вашем PHP .. так что ваша родительская страница имеет это:

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

и в вашем php-скрипте вы повторяете

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

Причина, по которой вы не можете вызвать parent.document.location, заключается в том, что он предназначен только для чтения - для этого у вас должна быть доступна функция для родителя.

9 голосов
/ 09 февраля 2016

Простой способ напрямую в PHP перенаправить родительскую страницу, а не iframe:

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

die; не обязательно необходим, но это хорошо "на всякий случай", чтобы предотвратить продолжение сценария, например, если в браузере пользователя отключен JavaScript.

4 голосов
/ 20 апреля 2011

мы можем использовать JavaScript следующим образом:

target.window.location='locationpage.html';
top.window.location='mypage2.html';
1 голос
/ 15 ноября 2014

Вы можете сделать ссылку на страницу, используя <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>

<? }?>
1 голос
/ 18 июля 2012

Лучшее и самое простое, что нужно сделать - это использовать целевой элемент формы

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

любой из целевых параметров работает нормально

0 голосов
/ 03 июня 2019

На странице, которую вы хотите загрузить в _top, добавьте следующий код в заголовок

<script type="text/javascript">
if (top != self) top.location.href = location.href;
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...