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
hrefcontenha 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.