Acerca de este problema HTML
Un URI (Uniform Resource Identifier) sigue una sintaxis estricta definida por RFC 3986. La estructura general es scheme:scheme-data, donde no se permiten espacios u otros caracteres ilegales entre el punto y coma y los datos específicos del esquema. Cuando el validador W3C informa “Carácter ilegal en los datos del esquema”, significa que el parser encontró un carácter que no está permitido en esa posición del URI.
La causa más común de este error es agregar un espacio después del punto y coma en enlaces tel: (ej., tel: +123456789). Aunque los navegadores pueden ser tolerantes y aún así manejar el enlace, el marcado es técnicamente inválido. Esto importa por varias razones:
-
Accesibilidad: Los lectores de pantalla y las tecnologías de asistencia dependen de URIs bien formados para identificar correctamente los tipos de enlace. Un enlace
tel:mal formado podría no ser anunciado como un número de teléfono. -
Cumplimiento de estándares: Los URIs inválidos violan la especificación HTML, que requiere que el atributo
hrefcontenga una URL válida. -
Comportamiento entre dispositivos: Los dispositivos móviles usan el esquema URI para determinar qué aplicación debe manejar un enlace. Un URI
tel:mal formado puede fallar al activar el marcador telefónico en algunos dispositivos o sistemas operativos. -
Interoperabilidad: Mientras que algunos navegadores eliminan los espacios silenciosamente, otros pueden codificarlos como
%20, potencialmente rompiendo el número de teléfono u otros datos del esquema.
Para solucionar este problema, asegúrate de que no haya espacios u otros caracteres ilegales entre el punto y coma del esquema y los datos que le siguen. Para enlaces telefónicos específicamente, el número debe seguir directamente al punto y coma, usando solo dígitos, guiones, puntos, paréntesis y el prefijo + como se define en RFC 3966.
Ejemplos
Incorrecto: espacio después del punto y coma en un enlace tel:
<a href="tel: +1-234-567-8900">Llámanos</a>
El espacio entre tel: y +1 es un carácter ilegal en los datos del esquema URI.
Correcto: sin espacio después del punto y coma
<a href="tel:+1-234-567-8900">Llámanos</a>
Incorrecto: espacio después del punto y coma en un enlace mailto:
<a href="mailto: support@example.com">Contactar soporte</a>
Correcto: mailto: sin espacio
<a href="mailto:support@example.com">Contactar soporte</a>
Incorrecto: otros caracteres ilegales en los datos del esquema
<a href="tel:+1 234 567 8900">Llámanos</a>
Los espacios dentro del número de teléfono en sí también son caracteres ilegales en el URI. Usa guiones, puntos, o ningún separador en su lugar.
Correcto: separadores válidos en un número de teléfono
<a href="tel:+1-234-567-8900">Llámanos</a>
<a href="tel:+1.234.567.8900">Llámanos</a>
<a href="tel:+12345678900">Llámanos</a>
Formato visual vs. el valor del href
Si quieres que el número de teléfono mostrado incluya espacios para mejor legibilidad, formatea el texto visible por separado del valor del href:
<a href="tel:+12345678900">+1 234 567 8900</a>
El href contiene un URI válido sin espacios, mientras que el texto del enlace está formateado para fácil lectura. Esto te da lo mejor de ambos mundos — marcado válido y una visualización amigable para el usuario.
Encuentra problemas como este automáticamente
Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.
Más información: