Target Blank

Por: Henrique C. Pereira

Publicado em Friday 07 October 2005 às 00:26

Categoria: HTML/CSS/JScript

O exemplo deste post está aqui e o script pode ser baixado aqui.

Há diversas discussões sobre se um link em um site deve ou não abrir em outra página e as razões de quando isso deve ocorrer. Mesmo que um link em um site não possua o target="_blank" os browsers possuem teclas que te permite controlar se um link deve abrir na mesma página ou se deve abrir em outra.

Para os casos em que você precisar que um link abra em outra janela, em um site com doctype de XHTML 1.0 Strict, independente do visitante querer ou não, aqui tem uma solução.

O doctype XHTML 1.0 Strict não aceita o atributo target nos hiperlinks. Isso só é permitido se você utilizar um doctype transitional ou frameset, caso contrário, você não deve utilizar o atributo se quiser que seu código esteja dentro dos padrões da W3C. Entretanto, com um script simples você pode obter o mesmo comportamento que o atributo target="_blank" teria, mas sem utiliza-lo se você precisar faze-lo.

No seu documento XHTML você deve proceder da seguinte maneira. A função de javascript faz com que todos os hyperlinks com um atributo definido com o rel="externo" abram em uma nova janela. O atributo "rel" especifica uma relação entre o documento onde o link se encontra e o alvo de origem. Para esta função eu defini a palavra "externo" como o valor necessário do atributo "rel" para que o script faça com que este link abra em outra janela. Ou seja, todos os links que você quiser que abram em outra janela, devem possuir o atributo rel="externo" nele escrito como no exemplo:

<a href="www.seusite.com" title="seusite" rel="externo">seusite</a>

O Script ainda insere um texto no title do link dizendo que ele vai abrir em uma nova janela, ou outra mensagem que você desejar inserir para todos os links que abrem externamente no seu site.

Comentários dos leitores

Este artigo possui 26 comentários

  1. Thiago Melo Friday 07 October 2005 às 16:42

    Muito bom este código! Agora que vou começar a me aventurar no "Strict" tenho certeza que este código me será muito útil! Parabéns por mais este artigo!

  2. Flávio Theruo #1° Friday 07 October 2005 às 20:10

    Henrique, realmente é uma funcionalidade muito interessante e muito útil.

    E esse script é muito legal.

  3. Roberto Almeida Long #2° Saturday 08 October 2005 às 10:01

    Fala Henrique blz ?

    deixa eu te perguntar … pelo que vi no script vc localiza os links e se estiverem com o atributo rel="externo" ele adiciona o target via javascript.

    Funciona perfeito mas, como o target não é aceito ele não deveria ser utilizado nem mesmo pelo script certo ou eu to viajando ?

    vlw ótimo site … to preparando um layout pra mandar pra ti … flws

  4. Giovani #3° Friday 14 October 2005 às 18:34

    Muito legal o site, mas poderiam dar uma olhada na tipografia utilizada, pois tenho muita dificuldade para ler no site.

  5. eduveks #4° Tuesday 18 October 2005 às 07:58

    Isto não seria mais fácil e mais simples???

    Some Other Site

  6. eduveks #5° Tuesday 18 October 2005 às 08:01

    Isto não seria mais simples???

    <a onclick="window.open(this.href,'_blank');return false;" href="http://some_oother_site.com">Some Other Site

  7. Henrique Costa Perei #6° Tuesday 18 October 2005 às 08:08

    Edu, sua primeira opção não funciona no XHTML 1 Strict. Sua segunda opção funciona, muito bem para poucos links. Para um site grande, é mais limpo administrar, criando um javascript pequeno e administrando cada link com um rel="externo".

  8. Orestes #7° Tuesday 25 October 2005 às 22:04

    Concerteza vo usar isso

    É um "chute muito forte no saco" ter que ficar segurando a tecla Shift pra abrir em uma outra janela.

  9. Pingback: Novidades » Revolução

  10. Arthur S. E. #8° Wednesday 09 November 2005 às 09:31

    Henrique, sou ignorante em relação ao XHTML e gostaria de saber porquê o XHTML 1.0 Strict não aceita "target" em hiperlinks (porque foi "deprecated")? (se é que há uma resposta)

  11. Edy #9° Wednesday 23 November 2005 às 03:10

    Acho q o mais simples seria:

    Texto

  12. Edy #10° Wednesday 23 November 2005 às 04:44

    a href="site.com" onclick="this.target='_blank'"

  13. Pingback: Designing for Web 2 - Criando sites para web 2 » Revolução

  14. Pingback: Revolução » Revolução

  15. Pingback: Hyperlinks: o atributo target e algumas querelas morais. » Revolução

  16. Pingback: Leandro Vieira Pinho - Desenvolvimento web em geral. » Blog Archive » Atributo target ou javascript obstrusivo para abrir novas janelas?

  17. Paulo Henrique Andra #11° Monday 17 July 2006 às 07:11

    Validei este código no Adobe Dreamweaver:

    Início

    Recebi um aviso de que o atributo "rel", da tag <a>, não é suportado em navegadores Microsoft Internet Explorer 5.0, Microsoft Internet Explorer 5.5, Microsoft Internet Explorer 6.0 e Netscape Navigator 6.0. Isso seria verdade?

  18. Pingback: terreiro.net » Arquivo » Vocês não precisam ficar aqui

  19. Pingback: dudut » Blog Archive » Target Blank - Usar ou não Usar?

  20. Pingback: A "usabilidade" de informar ao usuário que um link é externo ao seu site » Revolução Etc - Web Standards em uma casca de noz!

  21. Pingback: Designing for Web 2 « WebDois

  22. Areshandore #12° Friday 27 April 2007 às 02:27

    Gostei do script pra mostrar como mudar uma monte de tag ao mesmo tempo, mas pra mostrar como manter xhtml strict é uma baita trapassa.

    Dúvida: o do Edy(#12) ainda mantém strict?

    Comparando com o Google e as trapassas que fazem para conseguir altas posições no ranking e que o google bane quem trapaceia, então podemos dizer que seu código seria banido pelo w3c.

    Mas que o código é bacana, isso é.

  23. Areshandore #13° Friday 27 April 2007 às 02:56

    Uma solução é deixar o usuário decidir.

    Basta deixar um checkbox marcado com a opção "Abrir links de sites externos em uma nova janela". Se o cara desmarcar é porque não quer continuar no site ou porque gosta de ficar usando o botão Voltar.

  24. neo #14° Wednesday 18 July 2007 às 22:56

    ah esse código é muito grande e é tem muita gambiarra,mas até que é maneio.

    Eu acho que da ,acho não tem certeza que da para fazer um código pequeno e manero sem gambiarra!.

  25. Fabio Alexis #15° Wednesday 31 October 2007 às 08:50

    Olá,

    Constatei (assim como o Paulo disse) o IE não suporta o atributo rel. Alguém sabe como solucionar esse problema?

  26. Leonardo #16° Monday 16 August 2010 às 11:18

    Não estou conseguindo baixar o Script será que você poderia upar ele de novo?

Deixe seu comentário:

Observação: Todos os campos obrigatórios estão marcados com um asterisco (*).

  1. As seguintes tags podem ser inseridas nos comentários: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Sobre este blog

Meu nome é Henrique C. Pereira e o Revolução Etc é o meu blog pessoal. Eu trabalho com design de interfaces, dispositivos móveis, planejamento de soluções web, arquitetura da informação, programação de interfaces, acessibilidade, padrões web, e-commerce e outras coisas relacionadas.
Leia mais sobre o autor.