2010-06-06 11 views
19

Ho un semplice modulo che si trova all'interno di IFRAME. Quando l'utente fa clic su INVIA, reindirizza a una pagina specifica sul mio server. La funzione che uso per il redirect èPHP "header (location)" all'interno di IFRAME, da caricare in _top posizione?

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

Ma io voglio la nuova pagina per aprire in posizione _top, non all'interno della stessa IFRAME che uso. Come posso dire al browser di aprire la nuova pagina in _top non all'interno dell'IFRAME? Grazie in anticipo.

+0

Cosa fai se non hai accesso all'elemento FORM e inoltre non hai accesso al codice della pagina PARENT? – Doug

risposta

26

Non è possibile ottenere l'effetto desiderato in PHP. Questo è qualcosa che avrei dovuto fare da JavaScript o aggiungere l'attributo target-<form>:

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

+1 buona soluzione. Tuttavia, rovinerà qualsiasi controllo degli errori sul lato server se si desidera reindirizzare l'utente alla pagina originale in caso di errore. – jeroen

+0

Questa è stata la soluzione più semplice di sempre :) Ma quando non lo so ... :) È meglio chiedere, giusto :) – Spoonk

+0

@jeroen Faccio un controllo sul campo con javascript all'interno della mia semplice pagina .html. Non ho bisogno di un reindirizzamento in caso di campi vuoti. Io uso l'avviso :) – Spoonk

11

È possibile utilizzare javascript per accedere al genitore. Si potrebbe eco fuori JavaScript nel PHP .. quindi la pagina genitore ha questo:

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

e nello script php, è eco

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

La ragione per cui non si può chiamare parent.document. la posizione è perché è di sola lettura - devi avere una funzione disponibile sul genitore per farlo.

+1

Questa è la soluzione migliore per te. –

4

possiamo usare javascript in questo modo:

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

La cosa migliore e più semplice per farlo è quello di utilizzare l'elemento di destinazione modulo

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

uno dei parametri di destinazione funziona bene

1

Puoi collegarti alla pagina utilizzando <a href="pagename.php?Break=Y">Break Out</a> o utilizzare il codice

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

È quindi utilizzare il seguente codice nell'intestazione della pagina 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

Un modo semplice direttamente in PHP per reindirizzare la pagina principale, piuttosto che l'iframe:

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

Il die; isn è necessariamente necessario, ma è opportuno "nel caso" impedire allo script di continuare ulteriormente, ad esempio se javascript è disabilitato nel browser dell'utente.

Problemi correlati