Skip to main content
Validação HTML

Valor inválido “tel: X” para o atributo “href” no elemento “a”: Caráter ilegal nos dados do esquema.

Sobre este problema HTML

Um URI (Uniform Resource Identifier) segue uma sintaxe rigorosa definida pela RFC 3986. A estrutura geral é esquema:dados-do-esquema, onde não são permitidos espaços ou outros carateres ilegais entre os dois pontos e os dados específicos do esquema. Quando o validador do W3C reporta “Caráter ilegal nos dados do esquema”, significa que o analisador encontrou um caráter que não é permitido nessa posição do URI.

A causa mais comum deste erro é adicionar um espaço após os dois pontos em links tel: (por exemplo, tel: +123456789). Embora os navegadores possam ser tolerantes e ainda assim processar o link, a marcação é tecnicamente inválida. Isto é importante por várias razões:

  • Acessibilidade: Leitores de ecrã e tecnologias assistivas dependem de URIs bem formados para identificar corretamente os tipos de links. Um link tel: mal formado pode não ser anunciado como um número de telefone.
  • Conformidade com padrões: URIs inválidos violam a especificação HTML, que requer que o atributo href contenha um URL válido.
  • Comportamento entre dispositivos: Dispositivos móveis usam o esquema URI para determinar qual aplicação deve processar um link. Um URI tel: mal formado pode falhar ao ativar o marcador telefónico em alguns dispositivos ou sistemas operativos.
  • Interoperabilidade: Enquanto alguns navegadores removem silenciosamente os espaços, outros podem codificá-los como %20, potencialmente quebrando o número de telefone ou outros dados do esquema.

Para corrigir este problema, certifique-se de que não há espaços ou outros carateres ilegais entre os dois pontos do esquema e os dados que se seguem. Para links telefónicos especificamente, o número deve seguir os dois pontos diretamente, usando apenas dígitos, hífenes, pontos, parênteses e o prefixo + como definido pela RFC 3966.

Exemplos

Incorreto: espaço após os dois pontos num link tel:

<a href="tel: +1-234-567-8900">Ligue-nos</a>

O espaço entre tel: e +1 é um caráter ilegal nos dados do esquema URI.

Correto: sem espaço após os dois pontos

<a href="tel:+1-234-567-8900">Ligue-nos</a>

Incorreto: espaço após os dois pontos num link mailto:

<a href="mailto: support@example.com">Enviar email para suporte</a>

Correto: mailto: sem espaço

<a href="mailto:support@example.com">Enviar email para suporte</a>

Incorreto: outros carateres ilegais nos dados do esquema

<a href="tel:+1 234 567 8900">Ligue-nos</a>

Espaços dentro do próprio número de telefone também são carateres ilegais no URI. Use hífenes, pontos ou nenhum separador em vez disso.

Correto: separadores válidos num número de telefone

<a href="tel:+1-234-567-8900">Ligue-nos</a>
<a href="tel:+1.234.567.8900">Ligue-nos</a>
<a href="tel:+12345678900">Ligue-nos</a>

Formatação visual vs. valor do href

Se quiser que o número de telefone apresentado inclua espaços para facilitar a leitura, formate o texto visível separadamente do valor href:

<a href="tel:+12345678900">+1 234 567 8900</a>

O href contém um URI válido sem espaços, enquanto o texto do link é formatado para fácil leitura. Isto oferece-lhe o melhor de ambos os mundos — marcação válida e uma apresentação amigável para o utilizador.

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.