Como fazer todos os links externos do site abrir em uma nova aba/guia

Veja neste artigo como fazer com que todos os links externos do seu site abram em uma nova guia do navegador.

Como fazer todos os links externos do site abrir em uma nova aba/guia

Aprenda como fazer com que todos os links externos do seu site abram em uma nova guia do navegador automaticamente, sem precisar ficar adicionando target="_blank" manualmente para cada tag a (âncora) no HTML.

Adicionando script

Para fazer com que todos os links externos (aqueles que não apontam para o seu domínio) abram em uma nova guia, você pode usar JavaScript para adicionar o atributo target="_blank" a esses links. Aqui está um exemplo de como fazer isso:

  1. Obter todos os links da página: Você pode selecionar todos os elementos <a>.
  2. Verificar se o link é externo: Comparar o domínio do link com o domínio da sua página.
  3. Adicionar target="_blank" aos links externos: Se o link for externo, adicionar o atributo para que ele abra em uma nova guia.

Aqui está um código JavaScript que realiza essas etapas:

document.addEventListener("DOMContentLoaded", function () {
  // Obter o domínio atual
  const currentDomain = window.location.hostname;

  // Selecionar todos os links na página
  const links = document.querySelectorAll("a");

  // Iterar sobre cada link
  links.forEach((link) => {
    // Obter o href do link
    const href = link.getAttribute("href");

    // Verificar se o href é um link externo
    if (href && !href.includes(currentDomain) && href.startsWith("http")) {
      // Adicionar o atributo target="_blank"
      link.setAttribute("target", "_blank");
      // Evita que a página de destino acesse a página de origem
      link.setAttribute("rel", "noopener noreferrer");
    }
  });
});

Explicação do código:

  1. Evento DOMContentLoaded: O código é executado quando o DOM é carregado e pronto. Isso garante que todos os links estejam presentes na página antes de tentar manipulá-los.

  2. Obter o domínio atual: window.location.hostname retorna o domínio do site atual, sem incluir o protocolo (http/https) e o caminho.

  3. Selecionar todos os links: document.querySelectorAll("a") seleciona todos os elementos <a> na página.

  4. Iterar sobre os links: forEach é usado para iterar sobre cada link selecionado.

  5. Verificar se o link é externo:

    • href && !href.includes(currentDomain) && href.startsWith("http"): Isso verifica se o link tem um atributo href, se o href não contém o domínio atual e se o href começa com “http” (para garantir que é um link completo).
  6. Adicionar target="_blank": Se o link for externo, link.setAttribute("target", "_blank") adiciona o atributo target com valor _blank, fazendo com que o link abra em uma nova guia.

  7. Adicionar rel="noopener noreferrer": O atributo “rel=noopener noreferrer” é usado para abrir links externos em uma nova janela e evitar que a página de destino acesse a página de origem.

Como usar:

  1. Adicione o código JavaScript acima ao seu arquivo JavaScript principal ou diretamente dentro de uma tag <script> no final do seu arquivo HTML, antes da tag de fechamento </body>.
<!DOCTYPE html>
<html lang="pt-br">
  <head>
    <meta charset="UTF-8" />
    <title>Exemplo</title>
  </head>
  <body>
    <!-- Seu conteúdo aqui -->
    <script>
      document.addEventListener("DOMContentLoaded", function () {
        const currentDomain = window.location.hostname;
        const links = document.querySelectorAll("a");
        links.forEach((link) => {
          const href = link.getAttribute("href");
          if (
            href &&
            !href.includes(currentDomain) &&
            href.startsWith("http")
          ) {
            link.setAttribute("target", "_blank");
            link.setAttribute("rel", "noopener noreferrer");
          }
        });
      });
    </script>
  </body>
</html>

Dessa forma, todos os links externos na sua página abrirão em uma nova guia automaticamente.

Comente aqui em baixo se esta dica te ajudou 👊

Foto de Matheus Costa
Escrito por

Matheus Costa

UX/UI Designer & Dev Front-end

Especialista em UX/UI Design e Desenvolvimento Front-end em São José do Rio Preto/SP. Criação de sites de alta conversão, soluções digitais orientadas a SEO e performance.