Skip to main content
Validação HTML

Atributo “href” sem um valor explícito visto. O atributo pode ser removido pelo IE7.

Sobre este problema HTML

Porque isto acontece

Em HTML, certos atributos são booleanos e podem aparecer sem um valor (por exemplo, disabled, required). O atributo href não é um deles — espera um URL válido, caminho ou identificador de fragmento como seu valor. Quando um validador encontra href sem valor ou com um valor vazio, levanta um aviso porque o atributo está a ser usado de uma forma que não está conforme à especificação.

Escrever <a href> produz um atributo sem valor. Escrever <a href=""> produz um atributo cujo valor é uma string vazia, que se resolve para o URL da página atual de acordo com as regras de resolução de URL relativo. Ambas as formas são problemáticas:

  • href sem um valor: A especificação HTML requer que href contenha um URL válido. Um atributo sem valor é ambíguo e era ativamente removido pelo IE7, significando que o elemento perderia completamente o seu comportamento de link nesse navegador.
  • href="": Embora tecnicamente analisado como um URL relativo que aponta para o documento atual, isto quase nunca é a intenção do desenvolvedor. Causa o recarregamento da página ou scroll para o topo quando clicado, o que é confuso para os utilizadores e prejudicial para a acessibilidade.

O impacto

  • Acessibilidade: Os leitores de ecrã dependem do atributo href para identificar um elemento <a> como um link interativo. Um valor em falta ou vazio cria confusão — o leitor de ecrã pode anunciá-lo como um link mas não fornecer destino, ou pode não tratá-lo como um link de todo.
  • Compatibilidade do navegador: Como a mensagem do validador nota, o IE7 removeria completamente o atributo, significando que o elemento perdia a sua semântica e estilo de link. Embora o IE7 já não esteja em uso comum, atributos sem valor ainda podem causar problemas pontuais em analisadores, crawlers e ferramentas automatizadas.
  • Conformidade com padrões: HTML válido garante renderização e comportamento consistentes entre navegadores, tecnologias assistivas e crawlers de motores de busca.

Como corrigir

A correção depende da sua intenção:

  1. Se o elemento deve fazer link para algum lugar, forneça um URL real: href="https://example.com" ou href="/about".
  2. Se o elemento é um link placeholder (por exemplo, durante desenvolvimento ou para ações dirigidas por JavaScript), use href="#" e previna a navegação padrão com JavaScript.
  3. Se o elemento não precisa de ser um link de todo, use um <button> para ações interativas ou um <span> para texto não-interativo. Esta é frequentemente a escolha mais semanticamente correta.

Exemplos

❌ Incorreto: href sem um valor

<a href>Clique aqui</a>

Isto desencadeia o aviso de validação. O atributo não tem valor, o que é inválido para href.

❌ Incorreto: href com uma string vazia

<a href="">Clique aqui</a>

Isto resolve para o URL da página atual, provavelmente causando um recarregamento de página não intencional.

✅ Correto: Forneça um URL real

<a href="https://example.com">Visitar Exemplo</a>

✅ Correto: Use um fragmento como placeholder

<a href="#" onclick="doSomething(); return false;">Executar ação</a>

O return false previne que a página faça scroll para o topo. Uma abordagem moderna melhor usa event.preventDefault():

<a href="#" id="action-link">Executar ação</a>
<script>
  document.getElementById("action-link").addEventListener("click", function (e) {
    e.preventDefault();
    doSomething();
  });
</script>

✅ Correto: Use um <button> para ações

Se o elemento desencadeia uma ação JavaScript em vez de navegar para algum lugar, um <button> é a escolha mais semanticamente apropriada:

<button type="button" onclick="doSomething();">Executar ação</button>

Os botões são nativamente focalizáveis, acessíveis por teclado, e comunicam claramente intenção interativa às tecnologias assistivas — não é necessário href.

✅ Correto: Use um <span> para texto não-interativo

Se o elemento é puramente visual e não deve ser interativo de todo:

<span class="label">Não é um link</span>

Isto remove qualquer expectativa de interatividade tanto para o navegador como para o utilizador.

Encontre problemas como este automaticamente

O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.

Ajude-nos a melhorar os nossos guias

Este guia foi útil?

Pronto para validar os seus sites?
Comece o seu teste gratuito hoje.