Acerca de este problema HTML
Cuando escribes un enlace de teléfono usando <a href="callto:...">, puedes encontrarte con dos problemas distintos a la vez. Primero, el esquema callto: es un protocolo heredado y no estándar originalmente asociado con Skype. El esquema URI correcto y ampliamente soportado para enlaces de teléfono es tel:, como se define en RFC 3966. Segundo, los espacios dentro de los datos del esquema URI son caracteres ilegales. Las URIs no deben contener espacios sin codificar en ningún lugar, y las URIs telefónicas específicamente esperan un número de teléfono compacto compuesto por dígitos, guiones (-), puntos (.), y un signo más (+) inicial opcional para la marcación internacional.
El validador W3C genera este error porque el valor proporcionado a href viola las reglas de sintaxis URI. Los navegadores aún pueden intentar manejar el enlace, pero el comportamiento será inconsistente: algunos navegadores móviles pueden no reconocer callto: en absoluto, y los espacios en la URI pueden causar que el número se analice incorrectamente o se trunque. Usar el esquema estándar tel: con un número correctamente formateado asegura que el enlace funcione de manera confiable en todos los dispositivos y plataformas, incluyendo teléfonos móviles, aplicaciones VoIP y tecnologías de asistencia.
Cómo solucionarlo
-
Reemplaza
callto:contel:— El esquematel:es el estándar para enlaces de números de teléfono y está soportado por todos los navegadores modernos y sistemas operativos móviles. -
Elimina espacios y barras — Quita todos los espacios, barras o paréntesis del número de teléfono. Estos caracteres no son válidos en una URI
tel:sin codificación por porcentaje, y no sirven ningún propósito funcional en el destino del enlace. -
Usa un
+inicial para números internacionales — Si es aplicable, incluye el código de marcación internacional completo con prefijo+(ej.,+1para Estados Unidos,+49para Alemania). Esto hace que el enlace funcione independientemente de la ubicación del llamador. -
Separadores visuales opcionales — Si quieres separadores visuales dentro del
hrefpara mejorar la legibilidad en tu código fuente, usa guiones (-) o puntos (.), que están permitidos en URIstel:. Sin embargo, el enfoque más simple y seguro es solo dígitos (más el+inicial opcional).
Ejemplos
Incorrecto: callto: con espacios y barras
Esto desencadena el error del validador porque los espacios y barras son ilegales en los datos del esquema URI, y callto: no es estándar.
<a href="callto:07142/ 12 34 5">Llámanos</a>
Incorrecto: tel: con espacios
Incluso con el esquema correcto tel:, los espacios en el número de teléfono siguen siendo caracteres URI no válidos.
<a href="tel:07142 12 34 5">Llámanos</a>
Correcto: tel: solo con dígitos
<a href="tel:0714212345">Llámanos</a>
Correcto: número internacional con prefijo +
<a href="tel:+490714212345">Llámanos</a>
Correcto: usando guiones para legibilidad
Los guiones son caracteres válidos en URIs tel: y pueden mejorar la legibilidad del código fuente sin afectar la funcionalidad.
<a href="tel:+49-07142-12345">Llámanos</a>
Mostrar un número formateado al usuario
Aún puedes mostrar un número formateado de manera amigable para el usuario como el texto visible del enlace mientras mantienes el valor href limpio y válido.
<a href="tel:+490714212345">+49 (0) 7142 / 12 34 5</a>
Este enfoque te da lo mejor de ambos mundos: el texto del enlace es fácil de leer para los usuarios, y el valor href es una URI tel: válida que cumple con los estándares, funciona de manera confiable en todos los dispositivos y pasa la validación W3C.
Encuentra problemas como este automáticamente
Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.