Acerca de este problema HTML
La especificación HTML prohíbe explícitamente que las referencias de carácter numérico se expandan a ciertos caracteres de control, y el retorno de carro (U+000D) es uno de ellos. Aunque puedas escribir o
en tu marcado, la especificación define esto como un error de análisis. Los navegadores pueden manejarlo de forma inconsistente — algunos lo descartarán silenciosamente, otros pueden convertirlo a un carácter diferente — por lo que confiar en él lleva a un comportamiento impredecible entre entornos.
La razón por la que el retorno de carro se destaca está arraigada en cómo HTML normaliza los finales de línea. Durante el análisis, todos los caracteres de retorno de carro (y las parejas de retorno de carro + salto de línea) se normalizan a un único salto de línea (U+000A). Debido a que el carácter nunca se conserva tal como es, referenciarlo no sirve para ningún propósito práctico y se trata como un error. El WHATWG HTML Living Standard enumera U+000D entre los caracteres que no deben aparecer como referencias de carácter numérico.
Los caracteres de control en general son problemáticos en el contenido de texto HTML. La mayoría de ellos (U+0001 hasta U+001F, excluyendo tab, salto de línea y salto de página) no están permitidos. El retorno de carro entra en esta categoría porque, después de la normalización, efectivamente no existe en el documento analizado.
Cómo solucionarlo
-
Eliminarlo — En la mayoría de los casos, la referencia
es innecesaria. Simplemente elimínala. -
Reemplazar con
— Si necesitas una referencia de carácter de salto de línea (por ejemplo, en un atributotitleo un elementopre), usa (LINE FEED), que es un carácter de espacio permitido en HTML. -
Usar
<br>— Si necesitas un salto de línea visible en el contenido renderizado, usa el elemento<br>en lugar de una referencia de carácter.
Ejemplos
Incorrecto: usar una referencia de carácter de retorno de carro
<p>Primera línea Segunda línea</p>
Esto activa el error de validación porque se expande al carácter de control de retorno de carro.
El mismo error ocurre con notación hexadecimal:
<p>Primera línea
Segunda línea</p>
Correcto: usar una referencia de carácter de salto de línea
<p>Primera línea Segunda línea</p>
La referencia se expande a LINE FEED (U+000A), que está permitido en HTML. Ten en cuenta que en el flujo normal, esto se renderiza como espacio en blanco colapsable — no producirá un salto de línea visible a menos que estés dentro de un elemento pre o usando CSS white-space: pre.
Correcto: usar <br> para un salto de línea visible
<p>Primera línea<br>Segunda línea</p>
Si el objetivo es un salto de línea visible en la salida renderizada, el elemento <br> es el enfoque estándar y más confiable.
Correcto: salto de línea en un valor de atributo
A veces aparece en valores de atributo donde se pretende una nueva línea, como en tooltips de title:
<!-- Incorrecto -->
<span title="Línea uno Línea dos">Pasa el ratón</span>
<!-- Correcto -->
<span title="Línea uno Línea dos">Pasa el ratón</span>
La referencia es válida y algunos navegadores la renderizarán como un salto de línea dentro del texto del tooltip, aunque este comportamiento no está garantizado en todos los navegadores.
Encuentra problemas como este automáticamente
Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.