2009-02-24 12 views
251

Welches JavaScript muss ich verwenden, um ein Eltern-Fenster von einem Iframe umzuleiten?Eltern-Fenster von einer Iframe-Aktion umleiten

Ich möchte, dass sie auf einen Hyperlink klicken, der das übergeordnete Fenster mithilfe von JavaScript oder einer anderen Methode auf eine neue URL umleitet.

+4

Das ** Eltern ** -Fenster könnte auch ein 'IFrame' sein.Da die angenommene Antwort das ** oberste ** Fenster anspricht, schlage ich vor, dass Sie Ihre Frage ein wenig ändern. –

Antwort

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

Wie bereits erwähnt, wird die übergeordnete iframe umleiten.

+0

Müssen * nur * die Domains übereinstimmen? Oder müssen Domänen, Protokolle und Ports übereinstimmen? –

+0

Ich habe dies nur auf einem normalen Port 80 http Website getan. – MIP

+0

sollten Sie location.asign (newURI) betrachten location object method ':)' – Stphane

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

window.top bezieht sich auf das Fensterobjekt auf der Seite an der Spitze der Hierarchie Frames.

+7

Die Eigenschaft window.top.location.href kann nicht von Iframe aus aktualisiert werden. Es kann nur ausgeführt werden, wenn Sie auf localhost testen –

+3

@Ummar: Ich würde hinzufügen, dass dies funktioniert, wenn der Elternteil und der Iframe die gleiche Domäne, den gleichen Port (selbe Herkunft Richtlinien) hat, es verweigert Zugriff verweigert, wenn sie anders sind, um Sicherheitsverletzungen zu verhindern – Vimvq1987

+4

@Ummar das ist nicht wahr, http://jsfiddle.net/ppkzS/ für den Beweis. Sie können window.top.location.href ändern. Du kannst es einfach nicht lesen. Funktioniert in Chrom. – Parris

12

oder eine Alternative ist das folgende (mit Dokument-Objekt)

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

Diese Lösung ist Firefox-spezifisch. Man sollte einfach 'parent.location.href = ...' verwenden. https://developer.mozilla.org/en/document.location – kay

88

Ich fand, dass <a href="..." target="_top">link</a> funktioniert auch

+1

Funktioniert für mich in asp.net –

+6

Während die ausgewählte Antwort richtig ist, denke ich, dass dies eine bessere Antwort für die Frage ist. Außerdem wird es für die Leute funktionieren, die JS deaktiviert haben. – Michael

+0

Ich stimme zu, das ist die beste Lösung, aber das OP fragte speziell nach Javascript. Auf der anderen Seite, OP angegeben, es sollte Trigger über einen Anker sein - Ich kann nicht sehen, ein Szenario, wo man gezwungen wäre, Javascript von einem Anker-Tag zu verwenden, um das gewünschte Ergebnis zu erreichen, deshalb ist die Frage irreführend. – nocarrier

1

Es ist möglich, von einem iframe umzuleiten, aber keine Informationen vom übergeordneten Element zu erhalten.

1

Dies wird das Elend lösen.

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

Versuche

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

Einfache Version: ** parent.window.location = ''; ** –

+1

oder weiter vereinfacht: 'parent.location =‚url'' – grilly

-9

Redirect iframe in übergeordneten Fenstern mit von iframe in dem gleichen parent:

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

Dies wird das Hauptfenster der Index-Seite umgeleitet werden. Danke

+0

Duplizieren von [diese Antwort] (https://stackoverflow.com/a/ 580675/241211) von fast 5 Jahren früher. – Michael

5

@MIP ist richtig, aber mit neueren Versionen von Safari müssen Sie Sandbox-Attribut (HTML5) hinzufügen, um Redirect-Zugriff auf den iFrame zu geben. Es gibt einige spezifische Werte, die mit einem Leerzeichen zwischen ihnen hinzugefügt werden können.

Referenz (Sie müssen scrollen): https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe

Ex:

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

target="_parent" groß für mich gearbeitet. einfach und stressfrei!

+0

Diese scheinen gut zu funktionieren. Gibt es Nachteile bei der Verwendung dieser Methode anstelle von Javascript? – flyingL123

+0

nicht, dass ich weiß. Teilen Sie, wenn Sie etwas herausfinden. – rDroid

0

Wenn Sie auf eine andere Domain umleiten möchten, ohne dass der Benutzer, den Sie einen Link mit der Eigenschaft verwenden können, nichts zu tun haben:

target="_parent" 

wie zuvor gesagt, und dann verwenden:

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

um es automatisch umleiten zu lassen.

Beispiel:

<!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> 

Hinweis: Der Javascript-click() Befehl muss kommen, nachdem Sie den Link zu erklären.

Verwandte Themen