Skip to main content
Validação HTML

Uma referência de carácter numérico expandiu para retorno de carro.

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

  1. Remova-o — Na maioria dos casos, a referência 
 é desnecessária. Simplesmente elimine-a.
  2. Substitua por 
 — Se precisar de uma referência de carácter de quebra de linha (por exemplo, num atributo title ou num elemento pre), use 
 (LINE FEED), que é um carácter de espaço permitido em HTML.
  3. 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&#13;Second line</p>

Isto desencadeia o erro de validação porque &#13; 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&#10;Second line</p>

A referência &#10; 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 &#13; aparece em valores de atributo onde uma nova linha é pretendida, como em tooltips title:

<!-- Incorreto -->

<span title="Line one&#13;Line two">Hover me</span>

<!-- Correto -->

<span title="Line one&#10;Line two">Hover me</span>

A referência &#10; é 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.

Ajude-nos a melhorar os nossos guias

Este guia foi útil?

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