Cancelamento do ponteiro
A Silktide deteta botões e links que atuam no momento em que são premidos, em vez de quando a pressão é libertada. Atuar após a libertação dá às pessoas a oportunidade de corrigir o acionamento da opção errada, deslizando para fora antes de soltar.
Por que isto é importante
Toda a gente prime ocasionalmente o botão errado, mas as pessoas com tremores, destreza limitada ou baixa visão fazem-no com muito mais frequência. O gesto universal de recuperação consiste em continuar a premir, arrastar para fora do controlo e soltar — o que funciona porque os botões e links normalmente atuam quando são libertados. Um controlo configurado para reagir à pressão inicial retira essa possibilidade de escape: a ação é executada imediatamente, sem forma de a cancelar. Num botão de envio de formulário ou de eliminação, um deslize transforma-se num erro irreversível.
Este é o critério de sucesso 2.5.2 (Cancelamento do ponteiro) das , um requisito de — parte do nível de conformidade mais básico.
Como corrigir
- Acione as ações a partir do evento
click, que é disparado ao soltar, em vez demousedown,pointerdownoutouchstart. - Se um controlo precisar genuinamente de responder à pressão inicial — por exemplo, uma tecla de piano numa aplicação de música — certifique-se de que soltá-lo fora do controlo reverte ou cancela a ação, ou disponibilize uma opção para anular.
- Se o listener sinalizado não acionar realmente uma ação (pode apenas adicionar um efeito visual de pressão), pode o resultado.
// Problema: é disparado imediatamente ao premir e não pode ser cancelado
button.addEventListener('mousedown', submitForm);
// Correção: é disparado ao soltar, por isso arrastar para fora cancela
button.addEventListener('click', submitForm);
Como a Silktide faz esta verificação
- Carrega cada página num navegador real e regista os listeners de eventos de que esta regista.
- Procura listeners para os eventos de pressão:
mousedown,pointerdownetouchstart. - Sinaliza um listener quando este está associado a um controlo normalmente
ativado ao soltar: um botão, link, campo de envio ou reposição, ou um elemento
com uma função , como
button,link,menuitem,tabouswitch. - Ignora listeners associados à página inteira que não estejam ligados a um controlo específico, pois normalmente dizem respeito à deslocação ou ao comportamento de arrastar e largar, e não à ativação.
- Como a Silktide não consegue determinar o que o código do listener faz, os resultados são sinalizados para sua confirmação, em vez de serem contados como falhas confirmadas.
Resolução de problemas
O listener não ativa nada
Os listeners de eventos de pressão são frequentemente usados para efeitos
inofensivos: um estilo de elemento premido, uma animação de ondulação ou a
gestão do foco, enquanto a ação real continua a ocorrer em click.
Isto satisfaz o critério; aprove o resultado.
O controlo é um cursor deslizante ou uma pega de arrastamento
Os cursores deslizantes, as pegas de arrastamento e widgets semelhantes acompanham legitimamente a pressão inicial. As WCAG consideram o evento de pressão essencial para estas interações; aprove o resultado.