Cómo forzar el enlace del iframe para que se abra en la ventana principal


Respuestas:


617

Encontré que la mejor solución era usar la etiqueta base . Agregue lo siguiente al encabezado de la página en el iframe:

<base target="_parent">

Esto cargará todos los enlaces en la página en la ventana principal. Si desea que sus enlaces se carguen en una nueva ventana, use:

<base target="_blank">

Esta etiqueta es totalmente compatible con todos los navegadores.


44
¿Cómo funciona este navegador cruzado?
Charlie Schliesser el

3
@Wilf no estaba del todo correcto:;) <base target>debería aparecer antes que ninguno <a href>, ya que establece el contexto de navegación predeterminado para los siguientes enlaces; <base href>debe aparecer antes de cualquier referencia de URL ( <* href> <* src> <form action> <object data>...) ya que establece la URL base contra la cual se resuelven las URL relativas.
sam

55
¿Por qué respondiste esta pregunta un año después de que yo la respondiera, exactamente con la misma respuesta? Pero fuiste elegido. Esto es muy extraño.
vsync

55
Creo que es porque su respuesta abre el enlace en una nueva ventana, mientras que la mía lo abre en la ventana principal del iframe, que era la pregunta original. Lamento robarte el trueno!
Chris Vasselli

1
Tenga en cuenta que la <baseetiqueta no tiene cierre de acuerdo con la especificación w3.org/TR/html5/document-metadata#the-base-element, por lo que debería ser<base target="_parent" >
Mark Schultheiss

147

Utilice el atributo de destino:

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

1
intento esto, se abre en una nueva ventana
Haim Evgi

3
¡+1 de mi parte, target base = "_ parent" funciona pero target = "_ parent" nunca me ha fallado!

77
<base target="_blank">está bien, pero la pregunta aquí es sobre un enlace, no sobre el cambio de comportamiento de todos los enlaces en el iframe. Para mí esta es la respuesta correcta.
kriskodzi

34

Con JavaScript:

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

28

Puedes usar cualquier opción

en caso de solo página principal:

si desea abrir todos los enlaces en la página principal o en el iframe principal, utilice el siguiente código en la sección principal del iframe:

<base target="_parent" />

O

si desea abrir un enlace específico en la página principal o el iframe principal, utilice la siguiente manera:

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

O

en caso de iframe anidado:

Si desea abrir todos los enlaces en la ventana del navegador (redirigir en la URL del navegador), utilice el siguiente código en la sección principal del 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

si desea abrir un enlace específico en la ventana del navegador (redirigir en la url del navegador), utilice la siguiente manera:

<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
Buena respuesta, solo necesitaba usar esto para un enlace específico, pero la respuesta aceptada solo describe cómo cambiar el objetivo para todos los enlaces en la página. Gracias
dading84

15

Hay un elemento HTML llamado baseque le permite:

Especifique una URL predeterminada y un destino predeterminado para todos los enlaces en una página:

<base target="_blank" />

Al especificar _blank, asegúrese de que todos los enlaces dentro del iframe se abrirán afuera.


¿Se hereda esto en iframes anidados?
beppe9000


7

Pruebe el target="_parent" atributo dentro de anchor tag.


intento esto, se abre en una nueva ventana
Haim Evgi

44
Prueba target = "_ top". El iframe puede contener iframes anidados? ¿O javascript abre el enlace real en el evento onclick?
Gee

5

Si usa iframe en su página web, puede encontrar un problema al cambiar toda la página a través de un hipervínculo HTML (etiqueta de anclaje) del iframe. Hay dos soluciones para mitigar este problema.

Solución 1. Puede utilizar el atributo de destino de la etiqueta de anclaje como se muestra en el siguiente ejemplo.

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

Solución 2. También puede abrir una nueva página en la ventana principal desde el iframe con JavaScript.

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

Recuerde ⇒ target="_parent"ha quedado en desuso en XHTML, pero aún es compatible con HTML 5.x.

Se puede leer más en el siguiente enlace http://www.kriblog.com/html/link-of-iframe-open-in-the-parent-window.html


4

La solución más versátil y más cruzada del navegador es evitar el uso de la etiqueta "base" y, en su lugar, usar el atributo de destino de las etiquetas "a":

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

La <base>etiqueta es menos versátil y los navegadores son inconsistentes en sus requisitos para su ubicación dentro del documento, lo que requiere más pruebas entre navegadores. Dependiendo de su proyecto y situación, puede ser difícil o incluso totalmente inviable lograr la ubicación ideal del navegador cruzado del<base> etiqueta en .

Hacer esto con el target="_parent"atributo de la <a>etiqueta no solo es más amigable con el navegador, sino que también le permite distinguir entre los enlaces que desea abrir en el iframe y aquellos que desea abrir en el padre.


3

<a target="parent">abrirá enlaces en una nueva pestaña / ventana ... <a target="_parent">abrirá enlaces en la ventana principal / actual, sin abrir nuevas pestañas / ventanas. ¡No te olvides de eso!


2

Yah encontré

<base target="_parent" />

Esto es útil para abrir todos los enlaces de iframe abiertos en iframe.

Y

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

Esto lo podemos usar para toda la página o parte específica de la página.

Gracias a todos por su ayuda.


1

Tratar target="_top"

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

no es lo "_top"mismo 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>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.