2011-01-04 15 views
47

Come posso distinguere da una pagina all'interno di un iframe, se il genitore stesso si trova anche all'interno di un iframe?Controlla se la finestra genitore è iframe o no

Spiegazione:

My home page home.html contiene un'IFRAME

<iframe src="sample.html"></iframe> 

ho bisogno di rilevare se home.html (vale a dire: madre di sample.html) è all'interno di un iframe.

Codice in sample.html:

if(self==window) 
{ 
    alert('home.html is not in iframe'); 
} 
else 
{ 
    alert('home.html is in iframe'); 
} 

La mia domanda non è un duplicato. È un caso diverso.

+0

E 'un po' poco chiaro ... Avete un iframe in una pagina in un iframe? Vuoi verificare se una pagina è in un iframe o se la pagina che contiene l'iframe si trova in un iframe? – Guffa

+7

Duplicato: http://stackoverflow.com/questions/326069/how-to-identify-if-a-webpage-is-be-loaded-inside-an-iframe-or-directly-into-th – Kimtho6

+0

Che cos'è il differents allora? : s – Kimtho6

risposta

96

Questo è vero se una finestra non è un frame/iframe:

if(self==top) 

Se volete vedere se la finestra padre della finestra data è una cornice, uso:

if(parent==top) 

È un semplice confronto di top (la finestra più in alto della gerarchia delle finestre) e un altro oggetto finestra (self o parent).

+0

Non funziona per me :-( –

+2

se si desidera controllare se la finestra genitore si trova all'interno di un frame, basta usare 'if (parent == top)' (restituirà true se la finestra genitore non è una cornice) –

+0

U può capire la mia domanda.Grazie se (genitore == top) lavora per me –

20
var isInIFrame = (window.location != window.parent.location); 
if(isInIFrame==true){ 
    // iframe 
} 
else { 
    // no iframe 
} 
+2

o semplicemente 'var isInIFrame = window.location! == window.parent.location;' funzionerebbe pure. –

+5

C'è un caso limite in cui questo non funzionerà: se hai caricato la stessa pagina nell'iframe che contiene l'iframe. – Oliver

+1

anche, protezione interdominio o simile causerà un errore di script quando si accede a window.parent propery – oriadam

29

Controllare se window.frameElement non è nullo e vedere se la sua proprietà nodeName è "IFRAME":

var isInIframe = window.frameElement && window.frameElement.nodeName == "IFRAME"; 
+0

Questa risposta è ottima perché contiene un modo semplice e diretto per accedere all'elemento 'iframe' che contiene la pagina corrente (quando è caricato all'interno di tale). – Oliver

+0

Sono d'accordo con @Oliver. In questo modo è molto più semplice delle altre due risposte sopra e di qualsiasi altra strategia che ho visto per affrontare questo problema. Questa dovrebbe essere la risposta accettata ... –

Problemi correlati