aria-owns-valid

aria-owns doit donner un seul propriétaire à chaque élément, et jamais un ancêtre du propriétaire

automaticWCAG 1.3.1, 4.1.2 (A)confiance : highgravité : seriousrobust

Vérifie qu’aucun élément n’est nommé par plus d’un aria-owns, et qu’aucun aria-owns ne nomme l’élément lui-même ou l’un de ses ancêtres.

Applicabilité. Éléments que la page affiche, dotés d’un aria-owns qui nomme au moins un élément du même arbre.

Attendu. WAI-ARIA : un élément n’a qu’un seul propriétaire, son id ne figure donc pas dans plus d’un aria-owns, et un élément ne peut pas posséder un élément qui le contient.

  • Un élément nommé par deux aria-owns ou plus : fail (ARIA_OWNS_DUPLICATE), signalé sur l’élément possédé. Le navigateur le donne à un seul propriétaire, selon l’ordre, si bien que la structure qu’indiquent les autres propriétaires est perdue.
  • Un aria-owns qui nomme l’élément lui-même ou l’un de ses ancêtres : fail (ARIA_OWNS_ANCESTOR), signalé sur le propriétaire. Le navigateur ignore cette possession, puisqu’elle créerait un cycle.
  • Sinon : pass.

Ce que rapporte un constat.

  • ownerCount : pour ARIA_OWNS_DUPLICATE, le nombre d’éléments qui nomment l’élément possédé dans aria-owns.
  • ownedId : l’id nommé.

Ces champs de data.details aident à lire et à reproduire un constat. À part reasonCode et les quelques champs que la page Schéma de sortie donne comme stables, ils ne constituent pas un contrat stable : un champ peut être renommé ou supprimé dans une version mineure, ne vous appuyez donc pas dessus.

Exemples

pass
<ul role="list" aria-label="Steps" aria-owns="step-2"><li>Choose a size</li></ul>
<div role="listitem" id="step-2">Pay</div>

La liste possède un élément qu’aucun autre aria-owns ne nomme.

fail
<div role="list" aria-label="Today" aria-owns="task"></div>
<div role="list" aria-label="Tomorrow" aria-owns="task"></div>
<div role="listitem" id="task">Call the bank</div>

Deux listes revendiquent le même élément. Le navigateur ne le donne qu’à l’une d’elles, si bien que la structure de l’autre liste est perdue.

Voir le code source