Comment forcer l'ouverture du lien depuis iframe dans la fenêtre parent


Réponses:


617

J'ai trouvé que la meilleure solution était d'utiliser la balise de base . Ajoutez ce qui suit en tête de page dans l'iframe:

<base target="_parent">

Cela chargera tous les liens sur la page dans la fenêtre parent. Si vous souhaitez que vos liens se chargent dans une nouvelle fenêtre, utilisez:

<base target="_blank">

Cette balise est entièrement prise en charge dans tous les navigateurs.


4
Comment fonctionne ce cross-browser?
Charlie Schliesser du

3
@Wilf je n'étais pas tout à fait correct:;) <base target>devrait venir avant tout <a href>, car il définit le contexte de navigation par défaut pour les liens suivants; <base href>doit précéder toute référence d'URL ( <* href> <* src> <form action> <object data>…) car elle définit l'URL de base par rapport à laquelle les URL relatives sont résolues.
sam

5
pourquoi avez-vous répondu à cette question un an après que j'aie répondu, avec exactement la même réponse? mais vous avez été choisi. c'est tellement étrange.
vsync

5
Je pense que c'est parce que votre réponse ouvre le lien dans une nouvelle fenêtre, tandis que la mienne l'ouvre dans la fenêtre parente de l'iframe, qui était la question d'origine. Désolé de voler votre tonnerre!
Chris Vasselli

1
Notez que la <basebalise n'a pas de fermeture selon la spécification w3.org/TR/html5/document-metadata#the-base-element donc elle devrait l'être<base target="_parent" >
Mark Schultheiss

147

Utilisez target-attribute:

<a target="_parent" href="http://url.org">link</a>

1
j'essaye ceci, est ouvert dans une nouvelle fenêtre
Haim Evgi

3
+1 de ma part, base target = "_ parent" fonctionne mais target = "_ parent" n'a jamais échoué pour moi!

7
<base target="_blank">est ok, mais la question ici concerne un seul lien, pas le changement de comportement de tous les liens sur iframe. Pour moi, c'est la bonne réponse.
kriskodzi

34

Avec JavaScript:

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

28

Vous pouvez utiliser toutes les options

en cas de page parent uniquement:

si vous souhaitez ouvrir tous les liens dans la page parent ou iframe parent, vous utilisez le code suivant dans la section head de iframe:

<base target="_parent" />

OU

si vous souhaitez ouvrir un lien spécifique dans la page parent ou iframe parent, vous utilisez la manière suivante:

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

OU

en cas d'iframe imbriqué:

Si vous souhaitez ouvrir tous les liens dans la fenêtre du navigateur (rediriger dans l'URL du navigateur), vous utilisez le code suivant dans la section head de 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>

OU

si vous souhaitez ouvrir un lien spécifique dans la fenêtre du navigateur (rediriger dans l'url du navigateur), vous utilisez la méthode suivante:

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

ou

<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
Bonne réponse, je devais simplement l'utiliser pour un lien spécifique, mais la réponse acceptée ne décrit que comment changer la cible de tous les liens sur la page. Merci
dading84

15

Il y a un élément HTML appelé basequi vous permet de:

Spécifiez une URL par défaut et une cible par défaut pour tous les liens sur une page:

<base target="_blank" />

En spécifiant, _blankvous vous assurez que tous les liens à l'intérieur de l' iframe seront ouverts à l'extérieur.


est-ce hérité des iframes imbriqués?
beppe9000


7

Essayez l' target="_parent" attribut à l'intérieur du anchor tag.


j'essaye ceci, est ouvert dans une nouvelle fenêtre
Haim Evgi

4
Essayez target = "_ top". L'iframe peut contenir des iframes imbriqués? Ou le lien réel est ouvert par javascript sur l'événement onclick?
Gee

5

Si vous utilisez iframe dans votre page Web, vous pouvez rencontrer un problème lors de la modification de la page entière via un lien hypertexte HTML (balise d'ancrage) à partir de l'iframe. Il existe deux solutions pour atténuer ce problème.

Solution 1. Vous pouvez utiliser l'attribut cible de la balise d'ancrage comme indiqué dans l'exemple suivant.

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

Solution 2. Vous pouvez également ouvrir une nouvelle page dans la fenêtre parent à partir d'iframe avec JavaScript.

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

N'oubliez pas que ⇒ target="_parent"a été déprécié en XHTML, mais il est toujours pris en charge en HTML 5.x.

Plus d'informations peuvent être lues à partir du lien suivant http://www.kriblog.com/html/link-of-iframe-open-in-the-parent-window.html


4

La solution la plus polyvalente et la plus multi-navigateurs consiste à éviter l'utilisation de la balise "base" et à utiliser à la place l'attribut cible des balises "a":

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

La <base>balise est moins polyvalente et les navigateurs ne sont pas cohérents dans leurs exigences pour son placement dans le document, ce qui nécessite davantage de tests inter-navigateurs. En fonction de votre projet et de votre situation, il peut être difficile, voire totalement impossible, d'obtenir le placement idéal de la <base>balise entre les navigateurs .

Faire cela avec l' target="_parent"attribut de la <a>balise est non seulement plus convivial pour le navigateur, mais vous permet également de faire la distinction entre les liens que vous souhaitez ouvrir dans l'iframe et ceux que vous souhaitez ouvrir dans le parent.


3

<a target="parent">ouvrira des liens dans un nouvel onglet / fenêtre ... <a target="_parent">ouvrira des liens dans la fenêtre parent / actuelle, sans ouvrir de nouveaux onglets / fenêtres. Don't_forget_that_underscore!


2

Yah j'ai trouvé

<base target="_parent" />

Ceci est utile pour ouvrir tous les liens iframe ouverts dans iframe.

Et

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

Cela peut être utilisé pour une page entière ou une partie spécifique de la page.

Merci à tous pour votre aide.


1

Essayer target="_top"

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

n'est pas "_top"le même que "_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>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.