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 .


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>

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";

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>

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.


Wird dies in verschachtelten Iframes vererbt?
beppe9000


7

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


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


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.


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!


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.


1

Versuchen target="_top"

<a href="http://example.com" target="_top">
   This link will open in same but parent window of iframe.
</a>

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>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.