Sobre este problema HTML
A especificação HTML proíbe explicitamente as referências de carácter numérico de expandir para certos caracteres de controlo, e o retorno de carro (U+000D) é um deles. Embora possa escrever ou
na sua marcação, a especificação define isto como um erro de análise. Os navegadores podem lidar com isto de forma inconsistente — alguns irão descartá-lo silenciosamente, outros podem convertê-lo num carácter diferente — pelo que depender dele leva a comportamentos imprevisíveis entre ambientes.
A razão pela qual o retorno de carro é destacado está enraizada em como o HTML normaliza as terminações de linha. Durante a análise, todos os caracteres de retorno de carro (e pares de retorno de carro + line feed) são normalizados para um único line feed (U+000A). Como o carácter nunca é preservado tal como está, referenciá-lo não serve nenhum propósito prático e é tratado como um erro. O WHATWG HTML Living Standard lista U+000D entre os caracteres que não devem aparecer como referências de carácter numérico.
Os caracteres de controlo em geral são problemáticos no conteúdo de texto HTML. A maioria deles (U+0001 através de U+001F, excluindo tab, line feed, e form feed) não são permitidos. O retorno de carro enquadra-se nesta categoria porque, após normalização, efetivamente não existe no documento analisado.
Como corrigir
-
Remova-o — Na maioria dos casos, a referência
é desnecessária. Simplesmente elimine-a. -
Substitua por
— Se precisar de uma referência de carácter de quebra de linha (por exemplo, num atributotitleou num elementopre), use (LINE FEED), que é um carácter de espaço permitido em HTML. -
Use
<br>— Se precisar de uma quebra de linha visível no conteúdo renderizado, use o elemento<br>em vez de uma referência de carácter.
Exemplos
Incorreto: usar uma referência de carácter de retorno de carro
<p>First line Second line</p>
Isto desencadeia o erro de validação porque expande para o carácter de controlo de retorno de carro.
O mesmo erro ocorre com notação hexadecimal:
<p>First line
Second line</p>
Correto: usar uma referência de carácter de line feed
<p>First line Second line</p>
A referência expande para LINE FEED (U+000A), que é permitido em HTML. Note que no fluxo normal, isto é renderizado como espaço em branco colapsável — não produzirá uma quebra de linha visível a menos que esteja dentro de um elemento pre ou usando CSS white-space: pre.
Correto: usar <br> para uma quebra de linha visível
<p>First line<br>Second line</p>
Se o objetivo é uma quebra de linha visível na saída renderizada, o elemento <br> é a abordagem padrão e mais confiável.
Correto: quebra de linha num valor de atributo
Às vezes aparece em valores de atributo onde uma nova linha é pretendida, como em tooltips title:
<!-- Incorreto -->
<span title="Line one Line two">Hover me</span>
<!-- Correto -->
<span title="Line one Line two">Hover me</span>
A referência é válida e alguns navegadores irão renderizá-la como uma quebra de linha dentro do texto do tooltip, embora este comportamento não seja garantido em todos os navegadores.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.