2010-06-06 10 views
19

Tengo una forma simple que está dentro de IFRAME. Cuando el usuario hace clic en ENVIAR, lo redirecciona a una página específica en mi servidor. La función que utilizo para la redirección esPHP "header (location)" dentro de IFRAME, para cargar en _top location?

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

Pero quiero que la nueva página se abra en lugar _top, no dentro de la misma IFRAME que yo uso. ¿Cómo puedo decirle al navegador que abra la nueva página en _top no dentro de IFRAME? Gracias de antemano.

+0

¿Qué hace si no tiene acceso al elemento FORM y tampoco tiene acceso al código de la página PARENT? – Doug

Respuesta

26

No puede lograr el efecto deseado en PHP. Esto es algo que uno tiene que hacer desde JavaScript o añadir target atributo a <form>:

<form ... target="_top"> 
+0

+1 buena solución. Sin embargo, estropeará cualquier comprobación de errores del lado del servidor si desea redirigir al usuario a la página original en caso de error. – jeroen

+0

Gracias esta es la solución más simple que haya existido :) Pero cuando no lo sé ... :) Es mejor preguntar, a la derecha :) – Spoonk

+0

@jeroen Hago una verificación de campo con javascript dentro de mi página .html simple. No necesito una redirección en caso de campos vacíos. Uso alerta :) – Spoonk

11

Puede usar javascript para acceder a la matriz. Se podría repetir a cabo Javascript en su PHP .. por lo que su padre tiene esta página:

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

y en su script PHP, que se hacen eco de

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

La razón por la que no se puede llamar parent.document. la ubicación se debe a que es de solo lectura; debe tener una función disponible en el padre para hacerlo.

+1

Esta es la mejor solución para sho. –

4

podemos utilizar JavaScript como esto:

target.window.location='locationpage.html'; 
top.window.location='mypage2.html'; 
1

El mejor y más simple que hay que hacer es usar el elemento de formulario de destino

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

cualquiera de los parámetros de destino funciona bien

1

Puede enlazar a la página usando <a href="pagename.php?Break=Y">Break Out</a> o usar el código

<?php header("Location: pagename.php?Break=Y"); ?> 

a continuación, utiliza el siguiente código en la cabecera de la página con

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

Una forma sencilla directamente en PHP para redireccionar la página principal en lugar del iframe:

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

El die; ISN No necesariamente necesario, pero es bueno "por las dudas" evitar que el script continúe más, por ejemplo, si javascript está deshabilitado en el navegador del usuario.

Cuestiones relacionadas