HTML - Forçar a abertura de todos os links em uma nova janela

Publicado por Perfil removido em 27/02/2010

[ Hits: 15.937 ]

 


HTML - Forçar a abertura de todos os links em uma nova janela



O processo é muito simples. Criamos um Java Script que lista todos os links da página e dentro de um "for" modificamos o target deles. No exemplo mudei pra "_blank", mas você pode escolher o que for mais conveniente. Independente de como o link tenha sido criado e qual target tenha sido definido pra ele no código html, será mudado para o que for definido no script. Pra executar o script é só chamá-lo no evento onload do body.

<html>
  <head>
    <title>Abrir todos os links como blank</title>
    <script language="JavaScript">
      function AbrirTodosOsLinksComoBlank()
      {
        for (i = 0; i < document.links.length; i++)
        {
          document.links[i].target = "_blank";
        }
      }
    </script>
  </head>
  <body onload="JavaScript:AbrirTodosOsLinksComoBlank();">
    <a href="http://pedro-araujo.com/" target="_parent">Link 1</a><br>
    <a href="http://www.vivaolinux.com.br/">Link 2</a><br>
    <a href="http://www.ubuntu-br.org/" target="_blank">Link 3</a><br>
    <a href="#">Link 4</a><br>
    <a href="http://www.google.com.br/" target="_self">Link 5</a>
  </body>
</html>

Um exemplo prático é o que eu usei na reformulação do meu site. As páginas principais e institucionais estão no servidor da RJ Host que hospeda meu domínio principal, já as postagens do blog eu mantive no serviço Blogger do Google pra evitar uma migração numerosa de mais de um ano e meio de postagens, e vou continuar mantendo-as lá pra continuar a usar o sistema de publicação do Blogger, economizando espaço em disco e banda no servidor do meu domínio principal.

Mas pra que tudo fique no mesmo lugar eu embuti a página do blog no layout principal do site, só que como a maioria dos links das postagens não tinham target e automaticamente abriam na mesma janela como se fosse "_self" (que é o padrão) e isso acarretaria remontagem de frames, eu fiz uma verificação de pra onde os links estavam apontando, se fosse para o meu domínio principal abria no "_parent", se fosse pra dentro do blog fica na mesma janela e se for pra um endereço externo abre em nova janela.

Eu criei o script abaixo, coloquei ele no meu servidor, lá na edição do layout do blog referenciei ele (o Blogger tem restrições quanto a criar certos tipos de script dentro do layout dele) e ativei-o no onload do layout do blog. Ficou assim:

function AbrirTodosOsLinksComoBlank()
{
  var i;
  var s;
  for (i = 0; i < document.links.length; i++)
  {
    s = document.links[i].href;
    if ((s != "http://pedro-araujo.com/site") && (s.substr(0, 43)) != "http://pedroaraujoprogramador.blogspot.com/")
    {
      document.links[i].target = "_blank";
    }
  }
}

Outras dicas deste autor

Site para quem está iniciando em C

Monitorando o Squid pelo navegador

Descompactando arquivos 7z e 7zip no Slackware 13

Bootsplash no Slackware

Como ter todos os efeitos do Compiz, todos mesmo!

Leitura recomendada

Squirrelmail em português

Programação orientada à objetos em JavaScript

Framework Javascript

Netflix no Firefox (Debian) - Error: Request mediaKeySystem access rejected: EME has been preffed off [Resolvido]

Editor de HTML5 em tempo real

  

Comentários
[1] Comentário enviado por paulopatto em 28/02/2010 - 02:19h

Isso também pode ser feito com jQuery da seguinte maneira:

[code]

$("a").attr('target', '_blank');

[/code]



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts