So erzwingen Sie, dass der Link vom Iframe im übergeordneten Fenster geöffnet wird

Antworten:

617

Ich fand, dass die beste Lösung darin bestand, das Basis- Tag zu verwenden. Fügen Sie dem Kopf der Seite im Iframe Folgendes hinzu:

<base target="_parent">

Dadurch werden alle Links auf der Seite im übergeordneten Fenster geladen. Wenn Sie möchten, dass Ihre Links in einem neuen Fenster geladen werden, verwenden Sie:

<base target="_blank">

Dieses Tag wird in allen Browsern vollständig unterstützt .

Chris Vasselli
quelle
4
Wie funktioniert dieser browserübergreifende Tarif?
Charlie Schliesser
3
@Wilf Ich war nicht ganz richtig :;) <base target>sollte vor allen kommen <a href>, da es den Standard-Browserkontext für folgende Links festlegt; <base href>sollte vor einer URL-Referenz stehen ( <* href> <* src> <form action> <object data>…), da hiermit die Basis- URL festgelegt wird, anhand derer relative URLs aufgelöst werden.
Sam
5
Warum haben Sie diese Frage ein Jahr nach meiner Beantwortung mit genau derselben Antwort beantwortet? aber du wurdest ausgewählt. das ist so seltsam.
vsync
5
Ich denke, das liegt daran, dass Ihre Antwort den Link in einem neuen Fenster öffnet, während meine ihn im übergeordneten Fenster des Iframes öffnet, was die ursprüngliche Frage war. Tut mir leid, deinen Donner zu stehlen!
Chris Vasselli
1
Beachten Sie, dass das <baseTag kein Schließen gemäß der Spezifikation w3.org/TR/html5/document-metadata#the-base-element hat, also sollte es sein<base target="_parent" >
Mark Schultheiss
147

Verwenden Sie das Zielattribut:

<a target="_parent" href="http://url.org">link</a>
nnevala
quelle
1
Ich versuche dies, ist in einem neuen Fenster geöffnet
Haim Evgi
3
+1 von mir, base target = "_ parent" funktioniert, aber target = "_ parent" ist für mich nie gescheitert!
7
<base target="_blank">ist in Ordnung, aber die Frage hier bezieht sich auf einen Link, nicht auf das Ändern des Verhaltens aller Links auf iframe. Für mich ist das die richtige Antwort.
Kriskodzi
34

Mit JavaScript:

window.parent.location.href= "http://www.google.com";
Yenssen
quelle
28

Sie können beliebige Optionen verwenden

bei nur übergeordneter Seite:

Wenn Sie alle Links zur übergeordneten Seite oder zum übergeordneten Iframe öffnen möchten , verwenden Sie den folgenden Code im Kopfabschnitt des Iframes:

<base target="_parent" />

ODER

Wenn Sie einen bestimmten Link zur übergeordneten Seite oder zum übergeordneten Iframe öffnen möchten , gehen Sie folgendermaßen vor:

<a target="_parent" href="http://specific.org">specific Link</a>
<a  href="http://normal.org">Normal Link</a>

ODER

im Falle eines verschachtelten Iframes:

Wenn Sie alle Links im Browserfenster öffnen möchten (Weiterleitung in die Browser-URL), verwenden Sie den folgenden Code im Kopfbereich von iframe:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
    $(window).load(function(){
        $("a").click(function(){
            top.window.location.href=$(this).attr("href");
            return true;
        })
    })
</script>

ODER

Wenn Sie einen bestimmten Link in das Browserfenster öffnen möchten (Weiterleitung in die Browser-URL), gehen Sie folgendermaßen vor:

<a  href="http://specific.org"   target="_top" >specific Link</a>

oder

<a  href="javascript:top.window.location.href='your_link'">specific Link</a>
<a  href="javascript:top.window.location.href='http://specific.org'">specific Link</a>
<a  href="http://normal.org">Normal Link</a>
Ahosan Karim Asik
quelle
1
Gute Antwort, ich musste dies nur für einen bestimmten Link verwenden, aber die akzeptierte Antwort beschreibt nur, wie das Ziel für alle Links auf der Seite geändert wird. Danke
dading84
15

Es gibt ein HTML-Element namens base, mit dem Sie:

Geben Sie eine Standard-URL und ein Standardziel für alle Links auf einer Seite an:

<base target="_blank" />

Durch Angabe stellen _blankSie sicher, dass alle Links innerhalb des Iframes außerhalb geöffnet werden.

vsync
quelle
Wird dies in verschachtelten Iframes vererbt?
beppe9000
7

Wie bereits erwähnt, können Sie ein Zielattribut verwenden, das in XHTML jedoch technisch veraltet ist. Das lässt Sie mit Javascript, normalerweise so etwas wie parent.window.location.

Ryan McGrath
quelle
@ PaulD.Waite den Link, den Sie jetzt 404s gepostet haben.
Dan Loewenherz
1
@ Dan: Aha, ja danke. Neuer
Paul D. Waite
7

Versuchen Sie das target="_parent" Attribut innerhalb der anchor tag.

Gee
quelle
Ich versuche dies, ist in einem neuen Fenster geöffnet
Haim Evgi
4
Versuchen Sie target = "_ top". Der Iframe kann verschachtelte Iframes enthalten. Oder wird der eigentliche Link per Javascript bei einem Onclick-Ereignis geöffnet?
Gee
5

Wenn Sie iframe auf Ihrer Webseite verwenden, kann ein Problem auftreten, wenn Sie die gesamte Seite über einen HTML-Hyperlink (Ankertag) aus dem iframe ändern. Es gibt zwei Lösungen, um dieses Problem zu mindern.

Lösung 1. Sie können das Zielattribut des Ankertags verwenden, wie im folgenden Beispiel angegeben.

<a target="_parent" href="http://www.kriblog.com">link</a>

Lösung 2. Sie können auch eine neue Seite im übergeordneten Fenster von iframe mit JavaScript öffnen.

<a href="#" onclick="window.parent.location.href='http://www.kriblog.com';">

Denken Sie daran, dass ⇒ target="_parent"in XHTML veraltet ist, in HTML 5.x jedoch weiterhin unterstützt wird.

Weitere Informationen finden Sie unter folgendem Link: http://www.kriblog.com/html/link-of-iframe-open-in-the-parent-window.html

user1788142
quelle
4

Die vielseitigste und browserübergreifendste Lösung besteht darin, die Verwendung des "base" -Tags zu vermeiden und stattdessen das Zielattribut der "a" -Tags zu verwenden:

<a target="_parent" href="http://www.stackoverflow.com">Stack Overflow</a>

Das <base>Tag ist weniger vielseitig und die Anforderungen der Browser an die Platzierung im Dokument sind inkonsistent, sodass mehr browserübergreifende Tests erforderlich sind. Abhängig von Ihrem Projekt und Ihrer Situation kann es schwierig oder sogar völlig unmöglich sein, die ideale browserübergreifende Platzierung des <base>Tags zu erreichen.

Dies mit dem target="_parent"Attribut des <a>Tags zu tun, ist nicht nur browserfreundlicher, sondern ermöglicht Ihnen auch die Unterscheidung zwischen den Links, die Sie im iframe öffnen möchten, und denen, die Sie im übergeordneten Element öffnen möchten.

Adelmar
quelle
3

<a target="parent">öffnet Links in einem neuen Tab / Fenster ... <a target="_parent">öffnet Links im übergeordneten / aktuellen Fenster, ohne neue Tabs / Fenster zu öffnen. Vergiss nicht, dass du dich wunderst!

krisjd
quelle
2

Yah, ich habe gefunden

<base target="_parent" />

Dies ist nützlich, um alle in iframe geöffneten iframe-Links zu öffnen.

Und

$(window).load(function(){
    $("a").click(function(){
        top.window.location.href=$(this).attr("href");
        return true;
    })
})

Dies können wir für die ganze Seite oder einen bestimmten Teil der Seite verwenden.

Vielen Dank für Ihre Hilfe.

Ratan Paul
quelle
1

Versuchen target="_top"

<a href="http://example.com" target="_top">
   This link will open in same but parent window of iframe.
</a>
Aamir Shahzad
quelle
ist nicht "_top"dasselbe wie "_parent"?
Svelandiag
0
   <script type="text/javascript"> // if site open in iframe then redirect to main site
        $(function(){
             if(window.top.location != window.self.location)
             {
                top.window.location.href = window.self.location;
             }
        });
    </script>
Sandeep Kumar
quelle