Les fonctionnalités activées en agitant ou en inclinant l'appareil mobile disposent-elles d'une alternative accessible par bouton ?
Critère officiel 13.12 — Dans chaque page web, les fonctionnalités qui impliquent un mouvement de l’appareil ou vers l’appareil peuvent-elles être satisfaites de manière alternative (hors cas particuliers) ?
Pourquoi c'est important
Les personnes qui ne peuvent pas effectuer de mouvements physiques avec leur appareil — terminal fixé sur un fauteuil, tremblement involontaire — ne peuvent pas utiliser des fonctionnalités basées sur la détection de mouvement. Si ces fonctionnalités n'ont pas d'alternative, ces utilisateurs en sont exclus.
Exemples concrets
Ce qui est conforme
Une application de signalement de problème de voirie permet de « secouer l'appareil pour annuler la saisie », mais propose aussi un bouton « Annuler » visible dans l'interface. La fonctionnalité est entièrement utilisable sans mouvement physique.
Ce qui pose problème
Une application municipale utilise l'inclinaison du téléphone pour naviguer dans une carte panoramique. Il n'y a pas d'alternative par boutons. Un usager dont le téléphone est fixé ou dont les mains tremblent ne peut pas utiliser cette vue.
Comment agir
Ce critère concerne principalement les applications web avancées — il est rare sur les sites municipaux standards. Si votre site propose des fonctionnalités basées sur des capteurs de mouvement, exigez systématiquement une alternative par interface et la possibilité de désactiver la détection de mouvement pour éviter les déclenchements accidentels.
Règles clés
- Toute fonctionnalité par mouvement doit avoir une alternative dans l'interface.
- L'utilisateur doit pouvoir désactiver la réponse au mouvement dans les paramètres.
- Exception : le mouvement est essentiel (application de niveau à bulle, RA basée sur l'orientation).
Erreurs fréquentes
- Fonctionnalité 'secouer pour annuler' sans bouton alternatif
- Navigation par inclinaison sans alternative clavier
- Fonctionnalité gyroscopique sans option de désactivation
Exemples de code
secousse sans alternative
✗ Non conformewindow.addEventListener('devicemotion', e => {
if (intensite(e) > seuil) annulerAction();
});
// Pas de bouton 'Annuler' dans l'interfaceSeule façon d'annuler : secouer l'appareil. Impossible pour un appareil fixé ou avec tremblements.
secousse avec alternative et désactivation
✓ Conforme<!-- Alternative : bouton Annuler -->
<button type="button" onclick="annulerAction()">
Annuler
</button>
<!-- Désactivable dans les paramètres -->
let agitationActive = true;
window.addEventListener('devicemotion', e => {
if (!agitationActive) return;
if (intensite(e) > seuil) annulerAction();
});
<!-- Dans les paramètres -->
<label>
<input type="checkbox"
onchange="agitationActive = this.checked">
Secouer pour annuler
</label>Bouton 'Annuler' comme alternative. Option de désactivation dans les paramètres pour les utilisateurs qui en ont besoin.
Référence WCAG : 2.5.4