2009-02-24 14 views
251

Che tipo di codice JavaScript è necessario utilizzare per reindirizzare una finestra padre da un iframe?Reindirizza finestra padre da un'azione iframe

Desidero che facciano clic su un collegamento ipertestuale che, utilizzando JavaScript o qualsiasi altro metodo, reindirizza la finestra padre a un nuovo URL.

+4

La finestra ** parent **, di per sé, potrebbe essere anche un 'IFrame'.Poiché la risposta accettata affronta la finestra ** top **, ti suggerisco di cambiare la tua domanda un po '. –

risposta

413
window.top.location.href = "http://www.example.com"; 

Come detto in precedenza, sarà reindirizzare l'iframe genitore.

+0

Do * just * i domini devono corrispondere? Oppure domini, protocolli e porte devono corrispondere? –

+0

L'ho fatto solo su un normale sito Web http port 80. – MIP

+0

si dovrebbe prendere in considerazione il metodo location.asign (newURI) location object ':)' – Stphane

49
window.top.location.href = "http://example.com"; 

window.top si riferisce all'oggetto finestra della pagina nella parte superiore della gerarchia fotogrammi.

+7

La proprietà window.top.location.href non può essere aggiornata da Iframe, ma genera l'accesso negato dall'esecuzione. Può essere eseguito solo quando si esegue il test su localhost –

+3

@Ummar: vorrei aggiungere che questo funziona quando il genitore e l'iframe ha lo stesso dominio, stessa porta (stesse politiche di origine), lancia l'eccezione di accesso negata quando sono diversi, per evitare violazioni della sicurezza – Vimvq1987

+4

@Ummar che non è vero, http://jsfiddle.net/ppkzS/ per prova. È possibile modificare window.top.location.href. Non puoi leggerlo. Funziona in cromo. – Parris

12

o in alternativa è la seguente (oggetto documento utilizzando)

parent.document.location.href = "http://example.com"; 
+5

Questa soluzione è specifica per Firefox. Uno dovrebbe semplicemente usare 'parent.location.href = ...'. https://developer.mozilla.org/en/document.location – kay

88

ho scoperto che <a href="..." target="_top">link</a> funziona anche

+1

Funziona per me in asp.net –

+6

Mentre la risposta selezionata è corretta, penso che questa sia una risposta migliore per l'intento della domanda. Inoltre, funzionerà per le persone che hanno disabilitato JS. – Michael

+0

Sono d'accordo che questa sia la soluzione migliore ma l'OP ha chiesto espressamente javascript. D'altra parte, OP ha specificato che dovrebbe essere attivato tramite un ancoraggio - Non riesco a vedere uno scenario in cui si sarebbe costretti a usare javascript da un tag di ancoraggio per ottenere il risultato desiderato, quindi la domanda è fuorviante. – nocarrier

1

È possibile reindirizzare da un iframe, ma non ottenere informazioni dal genitore.

1

Questo risolverà la miseria.

<script>parent.location='http://google.com';</script> 
0

Prova utilizzando

window.parent.window.location.href = 'http://google.com' 
+0

Versione semplice: ** parent.window.location = ''; ** –

+1

o ulteriormente semplificata: 'parent.location = 'url'' – grilly

-9

Redirect iframe nella finestra principale dal iframe nello stesso genitore:

window.parent.document.getElementById("content").src = "content.aspx?id=12"; 
1
window.top.location.href = 'index.html'; 

Questo reindirizzerà la finestra principale alla pagina indice. Grazie

+0

Duplicato di [questa risposta] (https://stackoverflow.com/a/ 580675/241211) da quasi 5 anni prima. – Michael

5

@MIP è giusto, ma con le versioni più recenti di Safari, sarà necessario aggiungere l'attributo sandbox (HTML5) per fornire l'accesso di reindirizzamento all'iframe. Ci sono alcuni valori specifici che possono essere aggiunti con uno spazio tra di loro.

di riferimento (è necessario scorrere): https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe

Es:

<iframe sandbox="allow-top-navigation" src="http://google.com/"></iframe> 
6

target="_parent" ha lavorato molto per me. facile e senza problemi!

+0

Questi sembrano funzionare alla grande. Ci sono degli svantaggi nell'usare questo metodo piuttosto che Javascript? – flyingL123

+0

non che io sappia. CONDIVIDI se scopri qualcosa. – rDroid

0

Se vuoi reindirizzare a un altro dominio senza che l'utente debba fare nulla è possibile utilizzare un collegamento con la proprietà:

target="_parent" 

come detto in precedenza, e quindi utilizzare:

document.getElementById('link').click(); 

per reindirizzare automaticamente.

Esempio:

<!DOCTYPE HTML> 

<html> 

<head> 

</head> 

<body> 

<a id="link" target="_parent" href="outsideDomain.html"></a> 

<script type="text/javascript"> 
    document.getElementById('link').click(); 
</script> 

</body> 

</html> 

Nota: il comando javascript clic() deve venire dopo si dichiara il collegamento.

Problemi correlati