Skip to main content

Target _blank | a | HTML

  • Target _blank | a | HTML

1. O que é target="_blank"

O atributo target="_blank" em um link HTML instrui o navegador a abrir o link em uma nova aba ou janela.

<a href="https://example.com" target="_blank">Abrir link</a>

À primeira vista, isso parece inofensivo — mas há implicações importantes.


2. O que é um processo no navegador

Um processo é uma unidade isolada onde o navegador executa páginas web.

Cada processo possui:

  • CPU
  • Memória
  • Event loop
  • Execução de JavaScript

O navegador decide quais abas rodam no mesmo processo para otimizar recursos.


3. O problema de performance

Quando um link usa apenas target="_blank", o navegador pode colocar a nova aba no mesmo processo da aba original.

Consequências:

  • As abas dividem CPU e memória
  • JavaScript pesado em uma aba afeta a outra
  • Animações, timers e loops intensivos causam travamentos

📉 Resultado: sua página pode ficar lenta, engasgando ou travando, mesmo sem erro no seu código.


4. O problema de segurança (window.opener)

Ao abrir um link com target="_blank", a nova página recebe acesso ao objeto:

window.opener

Isso permite que a página aberta:

  • Redirecione sua página original
  • Modifique location
  • Execute ataques de phishing

Exemplo de ataque:

window.opener.location = "https://site-malicioso.com";

5. A solução correta: rel="noopener noreferrer"

A correção recomendada é sempre usar:

<a
href="https://example.com"
target="_blank"
rel="noopener noreferrer"
>
Abrir link seguro
</a>

6. O que noopener faz

  • Remove o acesso ao window.opener
  • Força isolamento entre abas
  • Impede compartilhamento de processo
  • Melhora performance e segurança

📌 Cada aba roda de forma independente.


7. O que noreferrer faz

Além de tudo que o noopener faz, o noreferrer:

  • Impede o envio do header HTTP Referer
  • Evita que o site destino saiba de onde o usuário veio

⚠️ Impacto: ferramentas de analytics podem perder essa informação.


8. Compatibilidade com navegadores

NavegadorComportamento
Chrome / Edge (Chromium)Pode compartilhar processo sem noopener
FirefoxPode compartilhar processo sem noopener
SafariPode compartilhar processo sem noopener

📌 O compartilhamento normalmente ocorre quando o domínio é o mesmo, mas não é garantido.


9. Boas práticas

✅ Sempre usar rel="noopener noreferrer" com target="_blank"

❌ Evitar target="_blank" desnecessário

✅ Usar lint rules para forçar essa prática


10. Resumo final

  • target="_blank" sozinho pode causar:

    • Perda de performance
    • Travamentos
    • Riscos de segurança
  • rel="noopener noreferrer":

    • Isola processos
    • Protege sua página
    • Evita ataques via window.opener

✔️ Conclusão: nunca use target="_blank" sem rel="noopener noreferrer".