Target Blank

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.

  • Thiago Melo

    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!

  • Flávio Theruo

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

    E esse script é muito legal.

  • Roberto Almeida Long

    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

  • Giovani

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

  • eduveks

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

    Some Other Site

  • eduveks

    Isto não seria mais simples???

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

  • http://revolucao.etc.br/ Henrique Costa Perei

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

  • Orestes

    Concerteza vo usar isso

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

  • Pingback: Novidades » Revolução()

  • http://del.icio.us/arthur_se Arthur S. E.

    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)

  • Edy

    Acho q o mais simples seria:

    Texto

  • Edy

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

  • Pingback: Designing for Web 2 - Criando sites para web 2 » Revolução()

  • Pingback: Revolução » Revolução()

  • Pingback: Hyperlinks: o atributo target e algumas querelas morais. » Revolução()

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

  • Paulo Henrique Andra

    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?

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

  • Pingback: dudut » Blog Archive » Target Blank - Usar ou não Usar?()

  • 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!()

  • Pingback: Designing for Web 2 « WebDois()

  • Areshandore

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

  • Areshandore

    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.

  • http://revolucao.etc.br/archives/target-blank/ neo

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

  • Fabio Alexis

    Olá,

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

  • http://www.deveserisso.com.br/cgi-sys/suspendedpage.cgi Leonardo

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