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
| Navegador | Comportamento |
|---|---|
| Chrome / Edge (Chromium) | Pode compartilhar processo sem noopener |
| Firefox | Pode compartilhar processo sem noopener |
| Safari | Pode 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".