Come forzare l'apertura del link da iframe nella finestra principale


Risposte:


617

Ho trovato la soluzione migliore era usare il tag base . Aggiungi quanto segue in testa alla pagina nell'iframe:

<base target="_parent">

Ciò caricherà tutti i collegamenti nella pagina nella finestra principale. Se si desidera caricare i collegamenti in una nuova finestra, utilizzare:

<base target="_blank">

Questo tag è completamente supportato in tutti i browser.


4
In che modo questa tariffa attraversa il browser?
Charlie Schliesser,

3
@Wilf Non ero del tutto corretto:;) <base target>dovrebbe venire prima di qualsiasi <a href>, poiché imposta il contesto di navigazione predefinito per i seguenti collegamenti; <base href>dovrebbe precedere qualsiasi riferimento URL ( <* href> <* src> <form action> <object data>...) poiché imposta l'URL di base rispetto al quale vengono risolti gli URL relativi.
sam,

5
perché hai risposto a questa domanda un anno dopo aver risposto, con la stessa identica risposta? ma sei stato scelto. è così strano.
vsync,

5
Penso che sia perché la tua risposta apre il collegamento in una nuova finestra, mentre la mia lo apre nella finestra principale dell'iframe, che era la domanda originale. Mi dispiace di averti rubato il tuono!
Chris Vasselli,

1
Si noti che il <basetag non ha alcuna chiusura in base alle specifiche w3.org/TR/html5/document-metadata#the-base-element, quindi dovrebbe essere<base target="_parent" >
Mark Schultheiss

147

Usa attributo target:

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

1
provo questo, è aperto in una nuova finestra
Haim Evgi,

3
+1 da me, target base = "_ parent" funziona ma target = "_ parent" non ha mai fallito per me!

7
<base target="_blank">è ok, ma la domanda qui riguarda un link, non sul cambiamento del comportamento di tutti i link su iframe. Per me questa è la risposta corretta.
Kriskodzi,

34

Con JavaScript:

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

28

Puoi usare qualsiasi opzione

nel caso della sola pagina principale:

se si desidera aprire tutti i collegamenti nella pagina padre o nell'iframe padre, utilizzare il seguente codice nella sezione head dell'iframe:

<base target="_parent" />

O

se vuoi aprire a collegamento specifico nella pagina principale o nell'iframe principale, utilizzare la seguente modalità:

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

O

in caso di iframe nidificato:

Se vuoi aprire tutti i link nella finestra del browser (reindirizzamento nell'URL del browser), utilizzare il seguente codice nella sezione head di 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>

O

se si desidera aprire un collegamento specifico nella finestra del browser (reindirizzamento nell'URL del browser), utilizzare la seguente modalità:

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

o

<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
Buona risposta, avevo solo bisogno di usarlo per un collegamento specifico, ma la risposta accettata descrive solo come cambiare l'obiettivo per tutti i collegamenti nella pagina. Grazie
dading84,

15

C'è un elemento HTML chiamato baseche ti consente di:

Specificare un URL predefinito e una destinazione predefinita per tutti i collegamenti in una pagina:

<base target="_blank" />

Specificando _blanksi assicura che tutti i collegamenti all'interno dell'iframe verranno aperti all'esterno.


questo è ereditato da iframe nidificati?
beppe9000,


7

Prova l' target="_parent" attributo all'interno di anchor tag.


provo questo, è aperto in una nuova finestra
Haim Evgi,

4
Prova target = "_ top". L'iframe potrebbe contenere iframe nidificati? O il link effettivo viene aperto da JavaScript sull'evento onclick?
Accidenti

5

Se si utilizza iframe nella pagina Web, è possibile che si verifichi un problema durante la modifica dell'intera pagina tramite un collegamento ipertestuale HTML (tag di ancoraggio) dall'iframe. Esistono due soluzioni per mitigare questo problema.

Soluzione 1. È possibile utilizzare l'attributo target del tag anchor come indicato nell'esempio seguente.

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

Soluzione 2. È inoltre possibile aprire una nuova pagina nella finestra principale da iframe con JavaScript.

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

Ricorda che ⇒ target="_parent"è stato deprecato in XHTML, ma è ancora supportato in HTML 5.x.

Maggiori informazioni sono disponibili sul seguente link http://www.kriblog.com/html/link-of-iframe-open-in-the-parent-window.html


4

La soluzione più versatile e cross-browser è quella di evitare l'uso del tag "base", e invece utilizzare l'attributo target dei tag "a":

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

Il <base>tag è meno versatile e i browser non sono coerenti nelle loro esigenze per il posizionamento all'interno del documento, che richiedono più test tra browser. A seconda del progetto e della situazione, può essere difficile o addirittura del tutto impossibile raggiungere il posizionamento ideale su più browser<base> tag tra .

Farlo con l' target="_parent"attributo del <a>tag non è solo più intuitivo per i browser, ma consente anche di distinguere tra i collegamenti che si desidera aprire nell'iframe e quelli che si desidera aprire nel padre.


3

<a target="parent">aprirà i collegamenti in una nuova scheda / finestra ... <a target="_parent">aprirà i collegamenti nella finestra principale / corrente, senza aprire nuove schede / finestre. Don't_forget_that_underscore!


2

Yah ho trovato

<base target="_parent" />

Questo è utile per aprire tutti i collegamenti iframe aperti in iframe.

E

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

Questo possiamo usarlo per l'intera pagina o parte specifica della pagina.

Grazie a tutti per il vostro aiuto.


1

Provare target="_top"

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

non è "_top"lo stesso di "_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>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.