Gestion des chargements de données asynchrones en utilisant les zones dynamiques ARIA lorsque l'utilisation du motif ARIA Progressbar est impossible.

Implémentation proposée avec les zones dynamiques

  • Initiation à l’accessibilité numérique

    Une journée de sensibilisation pour mieux comprendre en quoi le numérique, lorsqu’il est accessible, favorise l’inclusion des personnes en situation de handicap dans notre société.

  • Développement et intégration web

    Cette formation à l’accessibilité numérique apporte les outils et ressources indispensables pour concevoir et développer des pages web conformément au RGAA. Elle peut s’accompagner d’une certification.

  • Tester l’accessibilité de sites et d’applications

    Une formation à l’accessibilité numérique pour être en mesure d’évaluer le niveau de conformité d’un site web au RGAA : détecter les problèmes d’accessibilité, les prioriser et gérer les dérogations.

Exemple de code

HTML

<h2>Articles à la une</h2>
<ul id="a42-articlelist">
  <li>
    <h3>Initiation à l’accessibilité numérique</h3>
    <p>[...]</p>
  </li>
  <li>
    <h3>Développement et intégration web</h3>
    <p>[...]</p>
  </li>
  <li>
    <h3>Tester l’accessibilité de sites et d’applications</h3>
    <p>[...]</p>
  </li>
</ul>
<button id="a42-loadmore">Charger plus de formations</button>

JavaScript

/*
 * Ajout d'un écouteur sur l'évènement click du bouton
 */
 if(document.getElementById('a42-loadmore')){
 var btn = document.getElementById('a42-loadmore');
 btn.onclick = function(e){
   initMsg();
   loadMore();
 }
}

/*
 * Ajout du passage de texte positionné hors écran (role="alert")
 */
function initMsg(){
  var loadingMsg = document.createElement("p");
  var loadingMsgTxt = document.createTextNode("Chargement en cours");
  loadingMsg.appendChild(loadingMsgTxt);
  loadingMsg.setAttribute("id", "loadingMsg");
  loadingMsg.classList.add("sr-only");
  loadingMsg.setAttribute("role", "alert");
  document.body.appendChild(loadingMsg); 
}

/*
 * Chargement des données de manière asynchrone
 * Et insertion dans le DOM HTML
 */
function loadMore(){
  var list = document.getElementById("a42-articlelist");
  var article = document.createElement("li");

  var articleTitle = document.createElement("h3");
  var articleTitleText = document.createTextNode("Design d’interfaces accessibles : UX, UI, multimédia");
  articleTitle.setAttribute("tabindex", "-1"); 
  articleTitle.setAttribute("id", "a42-newElt"); 
  articleTitle.appendChild(articleTitleText);

  var articleContent = document.createElement("p");
  var articleContentText = document.createTextNode("[...]");
  articleContent.appendChild(articleContentText);

  article.appendChild(articleTitle);
  article.appendChild(articleContent);

  list.appendChild(article); 

  // Éléments ajoutés on peut supprimer le message de chargement
  cleanScreen(); 
}

/*
 * Repositionnement du focus et suppression du message d'alerte
 */
function cleanScreen(){
  // Suppression du message
  var loadingMsg = document.getElementById('loadingMsg');
  loadingMsg.remove();
  // Repositionnement du focus sur le titre
  var newTitle = document.getElementById("a42-newElt");
  newTitle.focus();
  // Désactivation du bouton d'action
  var btn = document.getElementById("a42-loadmore");
  btn.setAttribute("disabled");
}

Restitutions avec les lecteurs d'écran

Desktop

Restitution de la note de bas de page liée au lien « 2 » par aria-describedby, en fonction du lecteur d’écran et du navigateur
NVDA 2022.4 JAWS 2022 VoiceOver
Firefox 111 restitution conforme :
  • « Charger plus de formations, bouton ».
  • « Alerte, chargement en cours ».
  • « Liste de 4 éléments, Design d’interfaces accessibles : UX, UI, multimédia »
restitution conforme :
  • « Bouton, Charger plus de formations ».
  • « Attention, chargement en cours ».
  • « Design d’interfaces accessibles : UX, UI, multimédia »
non applicable
Edge 110 restitution conforme :
  • « Charger plus de formations, bouton ».
  • « Alerte, chargement en cours ».
  • « Liste de 4 éléments, Design d’interfaces accessibles : UX, UI, multimédia »
restitution conforme :
  • « Bouton, Charger plus de formations ».
  • « Attention, chargement en cours ».
  • « Design d’interfaces accessibles : UX, UI, multimédia »
non applicable
Chrome 111 restitution conforme :
  • « Charger plus de formations, bouton ».
  • « Alerte, chargement en cours ».
  • « Liste de 4 éléments, Design d’interfaces accessibles : UX, UI, multimédia »
restitution conforme :
  • « Bouton, Charger plus de formations ».
  • « Attention, chargement en cours ».
  • « Design d’interfaces accessibles : UX, UI, multimédia »
non applicable
Safari 16.3 (macOS Ventura 13.2) non applicable non applicable restitution conforme :
  • « Charger plus de formations, bouton ».
  • « Chargement en cours ».
  • « Design d’interfaces accessibles : UX, UI, multimédia »

Mobile

Support de la note de bas de page liée au lien « 2 » par aria-describedby, en fonction du lecteur d’écran sur mobile
Talkback Android natif 12 VoiceOver iOS 16.3
Chrome 104 restitution conforme :
  • « Charger plus de formations, bouton ».
  • « Chargement en cours ».
  • « Design d’interfaces accessibles : UX, UI, multimédia. »
non applicable
Safari non applicable restitution conforme :
  • « Charger plus de formations, bouton ».
  • « Chargement en cours ».
  • « Design d’interfaces accessibles : UX, UI, multimédia. Niveau d'entête 3. »

Ressources