Abrindo links em nova aba, não em janela: guia 2025

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Abrindo links em nova aba: por que isso é uma eterna dor de cabeça para desenvolvedores?



Olá, amigo! Se você já escreveu em JavaScript e tentou fazer o navegador abrir um link em uma nova aba (e não em uma nova janela), com certeza já enfrentou esse problema. Você escreve window.open(url, '_blank'), e o navegador... teimosamente abre uma nova janela. Ou simplesmente bloqueia o pop-up. Situação familiar?



No Stack Overflow, essa pergunta acumulou milhares de visualizações e centenas de respostas. E não é surpresa: o comportamento dos navegadores muda, novos padrões de segurança surgem, e o que funcionava ontem pode falhar hoje. Em 2025, a situação ficou um pouco mais simples, mas ainda há muitos detalhes.



Neste artigo, vamos abordar as melhores práticas para abrir URLs em uma nova aba usando JavaScript. Você aprenderá:



  • Por que window.open não é a solução definitiva
  • Como fazer o navegador abrir exatamente uma aba, e não uma janela
  • Quais armadilhas de segurança o target="_blank" esconde
  • Alternativas modernas e truques de 2025


Vamos nessa! 🚀



Por que window.open nem sempre funciona como esperado?



Parece simples: usar window.open(url, '_blank') e pronto. Mas não é bem assim. Os navegadores modernos (Chrome, Firefox, Safari) estão cada vez mais bloqueando pop-ups se a chamada não for resultado de uma ação direta do usuário (como um clique).



Além disso, mesmo que o pop-up seja permitido, em alguns casos o navegador pode abrir uma nova janela em vez de uma aba. Isso depende de:



  • Configurações do navegador do usuário
  • Tamanho da janela (se você definir width e height, o navegador pode optar por uma janela)
  • Contexto da chamada (código assíncrono, setTimeout, etc.)


Exemplo clássico com pegadinha



// Este código pode funcionar ou nãodocument.getElementById('myButton').addEventListener('click', function() {    window.open('https://example.com', '_blank');});


Se o usuário permitiu pop-ups — uma aba será aberta. Se não — silêncio. E se você adicionar um setTimeout dentro do manipulador, o navegador quase certamente bloqueará a chamada, pois ela não é mais considerada uma "ação direta".



Melhores práticas 2025: como abrir URL em nova aba sem se dar mal



Vamos analisar os métodos comprovados que funcionam em 2025. Abordaremos tanto os métodos clássicos quanto as abordagens modernas.



1. Use um link comum com target="_blank" (se possível)



A maneira mais confiável é não usar JavaScript. Se você tem um link estático, basta adicionar o atributo target="_blank" diretamente no HTML:



<a href="https://example.com" target="_blank" rel="noopener noreferrer">    Abrir em nova aba</a>


Importante! Sempre adicione rel="noopener noreferrer". Por quê? Porque sem esse atributo, a página que você abre ganha acesso a window.opener — e pode redirecionar sua página original para um site de phishing. Isso é a vulnerabilidade tabnabbing. Em 2025, isso já é considerado má prática, mas muitos ainda esquecem.



Vantagens: funciona sempre, seguro, simples.
Desvantagens: não é adequado se a URL for dinâmica ou se for necessário executar uma lógica antes de abrir.



2. window.open com a abordagem correta (links dinâmicos)



Se você precisa abrir uma URL que é gerada dinamicamente, use window.open, mas considerando os requisitos modernos:



function openInNewTab(url) {    // Criamos um link programaticamente    const link = document.createElement('a');    link.href = url;    link.target = '_blank';    link.rel = 'noopener noreferrer';        // Simulamos um cl                

Blogs

Book Recommendations