Atributo ARIA obrigatório ausente
O Silktide verifica os elementos que declaram uma função ARIA e confirma se também fornecem os atributos exigidos por essa função. Algumas funções não podem ser usadas sem os respetivos atributos, como um controlo deslizante que nunca indica qual é o seu valor.
<!-- Problema: um controlo deslizante tem de expor o seu valor atual -->
<div role="slider" tabindex="0"></div>
<!-- Correção: forneça o estado obrigatório -->
<div role="slider" tabindex="0"
aria-valuemin="0" aria-valuemax="100" aria-valuenow="50"></div>
Por que isso é importante
Atribuir uma função a um elemento é uma promessa: "isto é um controlo deslizante", "isto é uma caixa de seleção". Funções como estas exigem atributos de estado, porque, sem eles, a promessa fica vazia — uma pessoa utilizadora de um chega a uma caixa de seleção e não consegue saber se está selecionada, ou chega a um controlo deslizante e não consegue saber o seu valor ou intervalo. O controlo é anunciado, pode receber foco, mas é impossível de usar.
Como corrigir
- Adicione os atributos exigidos pela função e mantenha-os atualizados por script à medida que o estado do controlo muda — um
aria-checked="false"estático numa caixa de seleção funcional é tão enganador quanto não ter atributo algum. - Prefira elementos nativos quando existirem:
<input type="checkbox">e<input type="range">expõem o respetivo estado automaticamente, sem necessidade de manter ARIA.
Como o Silktide faz esta verificação
- Encontra todos os elementos da página que declaram um atributo
role. - Consulta os atributos que a ARIA 1.2 exige para essa função — por exemplo,
role="checkbox"exigearia-checked, erole="slider"exigearia-valuenow. - Ignora os casos em que o elemento expõe o estado de forma nativa: uma caixa de seleção ou um botão de opção reais já incluem o respetivo estado de seleção, um
<option>nativo inclui o respetivo estado de seleção, e um controlo deslizante comaria-valuetextpode omitiraria-valuenow. - Comunica cada elemento que não tem um atributo obrigatório.
Resolução de problemas
Um script define o atributo depois de a página carregar
O Silktide verifica a página enquanto ela carrega. Se o seu widget só adicionar os atributos de estado na primeira interação, as pessoas ouvirão um controlo sem estado até esse momento — apresente o estado inicial diretamente na página.
Esta verificação não comunica nada, embora eu espere resultados
Os testes de ARIA podem ser desativados por website. Consulte as definições avançadas do website.