Skip to main content
Validação HTML

Valor incorreto “” para o atributo “name” no elemento “a”: Um ID não pode ser uma string vazia.

Sobre este problema HTML

O atributo name em elementos <a> foi historicamente usado para criar âncoras nomeadas — alvos de fragmento que podiam ser ligados com href="#anchorName". No HTML moderno (o padrão vivo WHATWG), o atributo name em <a> é considerado obsoleto para este propósito. O atributo id é agora a forma padrão de criar alvos de fragmento, e pode ser colocado em qualquer elemento, não apenas em tags <a>.

Independentemente de usar name ou id, o valor deve ser uma string não vazia. O validador W3C aplica esta regra porque um identificador vazio não serve qualquer propósito funcional — não pode ser referenciado por uma ligação de fragmento, não pode ser alvo de JavaScript, e cria markup inválido. Os navegadores podem ignorá-lo silenciosamente, mas polui o DOM e sinaliza um provável erro no código.

Atributos name vazios aparecem frequentemente em conteúdo migrado de plataformas CMS mais antigas ou editores WYSIWYG que inseriram âncoras de marcador como <a name=""></a>. Podem também resultar de sistemas de template onde uma variável destinada a preencher o atributo foi resolvida como uma string vazia.

Porque é que isto importa

  • Conformidade com os padrões: Tanto o padrão vivo HTML WHATWG como a especificação HTML W3C requerem que atributos tipo identificador (id, name) não sejam strings vazias.
  • Acessibilidade: Leitores de ecrã e tecnologias assistivas podem tentar processar âncoras nomeadas. Identificadores vazios criam ruído sem fornecer qualquer valor de navegação.
  • Funcionalidade: Um name ou id vazio não pode ser usado como alvo de fragmento, pelo que o elemento é efetivamente inútil como destino de ligação.

Como corrigir

  1. Remover completamente o elemento se a âncora vazia não serve qualquer propósito — esta é a correção mais comum.
  2. Substituir name por id e fornecer um valor significativo e não vazio se precisar de um alvo de fragmento.
  3. Mover o id para um elemento semântico próximo em vez de usar uma tag <a> vazia independente. Por exemplo, colocar o id diretamente num cabeçalho, secção ou parágrafo.
  4. Garantir unicidade — cada valor id num documento deve ser único.

Exemplos

❌ Atributo name vazio gera o erro

<a name=""></a>
<h2>Introdução</h2>
<p>Bem-vindo ao guia.</p>

name vazio gerado por um template

<a name=""></a>
<p>Esta âncora deveria ser um alvo mas o valor está em falta.</p>
<a href="#">Saltar para a secção</a>

✅ Remover a âncora vazia se for desnecessária

<h2>Introdução</h2>
<p>Bem-vindo ao guia.</p>

✅ Usar id diretamente no elemento alvo

<h2 id="introduction">Introdução</h2>
<p>Bem-vindo ao guia.</p>

<!-- Ligação para a secção de outro lugar -->

<a href="#introduction">Ir para Introdução</a>

✅ Usar id numa âncora independente se necessário

Se precisar de um ponto de âncora preciso que não corresponda a um elemento existente, use uma tag <a> com um id válido e não vazio:

<a id="section-start"></a>
<p>Este parágrafo segue o ponto de âncora.</p>

<a href="#section-start">Saltar para o início da secção</a>

✅ Migrar name legado para id

Se o seu código existente usa o atributo name obsoleto com um valor válido, atualize-o para usar id:

<!-- Antes (obsoleto mas era válido em HTML4) -->

<a name="contact"></a>

<!-- Depois (HTML moderno) -->

<a id="contact"></a>

<!-- Ainda melhor: colocar o id num elemento semântico -->

<h2 id="contact">Contacte-nos</h2>

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.