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

Publicado por Perfil removido em 27/02/2010

[ Hits: 16.236 ]

 


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

Instalando TeamViewer no Debian 12

Habilitar nested paging em libvirt 0.8.3

Atualizando Ubuntu 14.04 LTS para o Ubuntu 16.04 LTS

Instalando Skype e Spotify no Fedora 28

Splash Screen do VOL no seu GRUB

Leitura recomendada

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

Palheta de cores utilizando Json e Javascript não obstrutivo

Framework Javascript

Upload de múltiplos arquivos com Javascript + Flash

Squirrelmail em português

  

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