aria-posinset
Позиция на елемент в набор, когато DOM не може да я изрази — обикновено защото елементите са виртуализирани, разпределени по страници или филтрирани. Винаги трябва да се комбинира с aria-setsize, така че екранните четци да могат да обявят „3 от 47“.
Кога да се използва
Когато DOM не съдържа пълния набор — виртуализирани списъци, рендиращи само видими елементи, таблици с пагинация, комбинирани кутии с филтриране, безкрайно превъртащи се потоци. Без aria-posinset и aria-setsize екранният четец трябва да предполага позицията от броя на наследниците и ще обяви „елемент 1 от 10”, когато в действителност потребителят е на елемент 327 от 5 000.
Валиден за елементи вътре в контейнери, които са по своята природа наборни: option в listbox, menuitem в menu, treeitem в tree, tab в tablist, article в feed, row в grid.
Ако DOM естествено включва всички елементи в изходен ред, aria-posinset не е необходим; помощните технологии броят наследниците автоматично.
Как се държи
Стойността е положително цяло число — индексът с база 1 на елемента в пълния набор. Трябва да се комбинира с aria-setsize на същия елемент; и двата атрибута принадлежат на самите елементи, не на контейнера.
При филтриране на елементи и двата атрибута трябва да се актуализират, за да отразяват видимия и релевантен набор, а не оригиналния пълен списък. В противен случай потребителите чуват позиции, които не съответстват на това, до което могат да навигират.
aria-setsize="-1" е валиден за случаи, когато общият брой е наистина неизвестен (отворен поток с търсене в реално време). Някои помощни технологии обявяват това като „много”; други не казват нищо.
Чести грешки
- Задаване на
aria-posinsetбезaria-setsize. Половината информация липсва; помощните технологии не могат да кажат „3 от колко”. - Пропускане на актуализация на стойностите след сортиране или филтриране. Потребителите чуват остарели позиции.
- Поставяне на атрибутите върху контейнера вместо върху елементите.
- Използване на
aria-posinset, когато DOM вече отразява пълния набор — помощните технологии щяха да броят правилно, а сега съществуват два източника на истина, които могат да се разминат. - Нулеви или отрицателни стойности за
aria-posinset(отрицателните не са разрешени; самоaria-setsizeприема-1). - Номера на позиции, несъответстващи на визуалния ред — потребител на екранен четец чува „елемент 5”, докато е маркиран третият видим елемент.
Пример
<!-- Виртуализиран listbox: само елементи 12-16 са в DOM, но наборът съдържа 5000 елемента -->
<div role="listbox" aria-label="Customers">
<div role="option" aria-posinset="12" aria-setsize="5000">Customer 12</div>
<div role="option" aria-posinset="13" aria-setsize="5000">Customer 13</div>
<div role="option" aria-posinset="14" aria-setsize="5000" aria-selected="true">Customer 14</div>
<div role="option" aria-posinset="15" aria-setsize="5000">Customer 15</div>
<div role="option" aria-posinset="16" aria-setsize="5000">Customer 16</div>
</div>