Sobre este problema HTML
O parser HTML lê atributos de elementos procurando por um nome, depois um =, depois um valor. Quando encontra = num local onde espera que um nome comece, significa que algo correu mal com a sintaxe do atributo. Isto pode acontecer de várias formas: um nome de atributo está completamente em falta antes do =, há um == duplo em vez de um único =, foi acidentalmente inserido um espaço no meio de um nome de atributo, ou o valor de um atributo anterior foi deixado sem aspas fazendo com que o parser perca o controlo de onde um atributo termina e o próximo começa.
Isto é um problema porque os navegadores podem silenciosamente descartar o atributo malformado, aplicá-lo incorretamente, ou até mesmo interpretar mal os atributos circundantes. Isto leva a comportamento imprevisível entre diferentes navegadores. Leitores de ecrã e outras tecnologias de apoio podem também falhar ao interpretar o elemento corretamente, criando problemas de acessibilidade.
Como corrigir
-
Verifique nomes de atributo em falta — Certifique-se de que cada sinal
=é precedido por um nome de atributo válido comoclass,id,src, etc. -
Verifique sinais de igual duplos — Substitua qualquer
==por um único=. - Verifique espaços em nomes de atributo — Nomes de atributo não podem conter espaços. Remova espaços acidentais dentro dos nomes.
- Verifique valores de atributo sem aspas — Coloque sempre os valores de atributo entre aspas duplas. Um valor sem aspas contendo caracteres especiais pode fazer com que o parser leia mal os atributos subsequentes.
-
Verifique caracteres
=perdidos — Procure por sinais=sobrantes de erros de copiar-colar ou edições incompletas.
Exemplos
Nome de atributo em falta antes do =
Um = aparece sem nome de atributo antes dele:
<!-- ❌ Mau: sem nome de atributo antes do = -->
<img ="photo.jpg" alt="A photo">
<!-- ✅ Corrigido: adicionado o nome de atributo src -->
<img src="photo.jpg" alt="A photo">
Sinal de igual duplo
Um erro de digitação cria == em vez de =:
<!-- ❌ Mau: sinal de igual duplo -->
<a href=="https://example.com">Link</a>
<!-- ✅ Corrigido: sinal de igual único -->
<a href="https://example.com">Link</a>
Espaço dentro de um nome de atributo
Um espaço divide o que deveria ser um nome de atributo em dois tokens, deixando um = órfão:
<!-- ❌ Mau: espaço em "data-value" divide o atributo -->
<div data- value="10">Content</div>
<!-- ✅ Corrigido: sem espaço no nome do atributo -->
<div data-value="10">Content</div>
Valor de atributo sem aspas causando uma cascata
Quando um valor não está entre aspas, o parser pode interpretar mal onde termina, fazendo com que o = do próximo atributo apareça numa posição inesperada:
<!-- ❌ Mau: valor de class sem aspas com espaço causa problemas de parsing -->
<p class=my class id="intro">Text</p>
<!-- ✅ Corrigido: valor de atributo devidamente entre aspas -->
<p class="my-class" id="intro">Text</p>
= perdido de uma edição incompleta
Um = sobrante de um atributo eliminado ou parcialmente editado:
<!-- ❌ Mau: = perdido deixado após remover um atributo -->
<div class="container" = >Content</div>
<!-- ✅ Corrigido: removido o = perdido -->
<div class="container">Content</div>
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.