Wcag uitgelegd

Focus verlaat het dialoogvenster

Focus verlaat het dialoogvenster — WCAG 2.4.3 Focusvolgorde (post 3/11)

De cookie-popup is open. Je tabt door de opties. Accepteren. Weigeren. Instellingen.

Tab. En ineens zit je in de footer. Achter de popup. De focus is ontsnapt.

Een dialoogvenster dat de pagina bedekt, houdt de focus gevangen. Na het laatste element gaat de focus terug naar het eerste element in het venster. Dat heet een focus trap.

Zonder focus trap navigeer je door de hele achterliggende pagina terwijl de popup er nog is. Je ziet niet waar je focus is. Je weet niet waar je bent.

// Focus trap in een dialoogvenster
function trapFocus(dialog) {
  const focusable = dialog.querySelectorAll(
    'button, [href], input, select, textarea'
  );
  const first = focusable[0];
  const last = focusable[focusable.length - 1];

  dialog.addEventListener("keydown", (e) => {
    if (e.key === "Escape") { sluitDialog(); return; }
    if (e.key !== "Tab") return;

    if (e.shiftKey && document.activeElement === first) {
      e.preventDefault();
      last.focus();
    } else if (!e.shiftKey && document.activeElement === last) {
      e.preventDefault();
      first.focus();
    }
  });
}

Of: gebruik <dialog> met showModal(). Die regelt de focus trap automatisch.

Test: open een popup, tab herhaaldelijk. Blijf je in het venster? Of ontsnap je naar de achtergrond?

Related Posts

Dialoogvenster krijgt geen focus bij openen

Dialoogvenster krijgt geen focus bij openen

Een popup verschijnt. “Wil je cookies accepteren?” Je drukt op Tab. En je zit in het navigatiemenu. Achter de popup. De focus is niet naar het dialoogvenster verplaatst.

Negatieve outline-offset die de focus verbergt

Negatieve outline-offset die de focus verbergt

Een link met een donkere achtergrond. De focusindicator is er, een zwarte outline van 2 pixels. Maar outline-offset: -4px duwt die outline naar binnen. Onder de achtergrondkleur.

Een ontoegankelijk element met een toegankelijk alternatief: mag je het laten staan?

Een ontoegankelijk element met een toegankelijk alternatief: mag je het laten staan?

In bijna elke audit kom ik deze situatie tegen. Een PDF die helemaal niet toegankelijk is. Een poster met de programma-informatie van een evenement. Een infographic vol cijfers. En de klant zegt: “Maar die informatie staat ook gewoon als tekst op de pagina. Hoeft dat dan nog?”