Como forçar o link do iframe a ser aberto na janela pai


Respostas:


617

Eu encontrei a melhor solução foi usar a tag base . Adicione o seguinte ao cabeçalho da página no iframe:

<base target="_parent">

Isso carregará todos os links da página na janela pai. Se você deseja que seus links sejam carregados em uma nova janela, use:

<base target="_blank">

Esta tag é totalmente suportada em todos os navegadores.


4
Como essa tarifa funciona em vários navegadores?
Charlie Schliesser

3
@ Wilf Eu não estava muito correto:;) <base target>deve vir antes de qualquer <a href>, pois define o contexto de navegação padrão para os seguintes links; <base href>deve vir antes de qualquer referência de URL ( <* href> <* src> <form action> <object data>…), pois define o URL base contra o qual os URLs relativos são resolvidos.
sam

5
por que você respondeu a essa pergunta um ano depois de eu ter respondido, com exatamente a mesma resposta? mas você foi escolhido. isso é tão estranho.
vsync

5
Acho que é porque sua resposta abre o link em uma nova janela, enquanto a minha abre na janela pai do iframe, que era a pergunta original. Desculpe roubar seu trovão!
Chris Vasselli

11
Note que a <basetag não tem fechamento de acordo com a especificação w3.org/TR/html5/document-metadata#the-base-element assim que deve ser<base target="_parent" >
Mark Schultheiss

147

Use o atributo target:

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

11
i tentar isso, é aberto em uma nova janela
Haim Evgi

3
+1 de mim, target base = "_ parent" funciona, mas target = "_ parent" nunca falhou para mim!

7
<base target="_blank">está ok, mas a questão aqui é sobre um link, não sobre a alteração do comportamento de todos os links no iframe. Para mim, esta é a resposta correta.
Kriskodzi

34

Com JavaScript:

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

28

Você pode usar qualquer opção

no caso de apenas a página pai:

se você deseja abrir todos os links na página pai ou no iframe pai, use o seguinte código na seção principal do iframe:

<base target="_parent" />

OU

se você deseja abrir um link específico na página pai ou no iframe pai, use a seguinte maneira:

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

OU

no caso de iframe aninhado:

Se você deseja abrir todos os links na janela do navegador (redirecionar na URL do navegador), use o seguinte código na seção principal do 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

se você deseja abrir um link específico na janela do navegador (redirecionar no URL do navegador), use o seguinte modo:

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

11
Boa resposta, eu precisava apenas usar isso para um link específico, mas a resposta aceita apenas descreve como alterar o destino de todos os links na página. Graças
dading84

15

Há um elemento HTML chamado baseque permite:

Especifique um URL padrão e um destino padrão para todos os links em uma página:

<base target="_blank" />

Ao especificar, _blankverifique se todos os links dentro do iframe serão abertos fora.


isso é herdado em iframes aninhados?
beppe9000 2/01


7

Tente o target="_parent" atributo dentro do anchor tag.


i tentar isso, é aberto em uma nova janela
Haim Evgi

4
Tente target = "_ top". O iframe pode conter iframes aninhados? Ou o link real é aberto por javascript no evento onclick?
Gee

5

Se você estiver usando o iframe em sua página da web, poderá encontrar um problema ao alterar a página inteira por meio de um hiperlink HTML (tag de âncora) do iframe. Existem duas soluções para mitigar esse problema.

Solução 1. Você pode usar o atributo de destino da marca âncora, conforme fornecido no exemplo a seguir.

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

Solução 2. Você também pode abrir uma nova página na janela pai do iframe com JavaScript.

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

Lembre-se ⇒ target="_parent"foi descontinuado no XHTML, mas ainda é suportado no HTML 5.x.

Mais informações podem ser lidas no link a seguir http://www.kriblog.com/html/link-of-iframe-open-in-the-parent-window.html


4

A solução mais versátil e cross-browser é evitar o uso da tag "base" e, em vez disso, usar o atributo de destino das tags "a":

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

A <base>tag é menos versátil e os navegadores são inconsistentes em seus requisitos para sua colocação no documento, exigindo mais testes entre navegadores. Dependendo do seu projeto e situação, pode ser difícil ou mesmo totalmente inviável obter o posicionamento ideal da <base>tag entre navegadores .

Fazer isso com o target="_parent"atributo da <a>tag não é apenas mais amigável ao navegador, mas também permite distinguir entre os links que você deseja abrir no iframe e os que deseja abrir no pai.


3

<a target="parent">abrirá links em uma nova guia / janela ... <a target="_parent">abrirá links na janela pai / atual, sem abrir novas guias / janelas. Não se esqueça disso!


2

Yah eu encontrei

<base target="_parent" />

Isso é útil para abrir todos os links iframe abertos no iframe.

E

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

Isso podemos usar para página inteira ou parte específica da página.

Obrigado a todos por sua ajuda.


1

Tentar target="_top"

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

não é "_top"o mesmo 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>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.