Понятия

Live region

Също: aria-live, ARIA live region

Регион, управляван от ARIA, който обявява динамични промени в съдържанието на екранните четци, без да премества фокуса. Атрибутът `aria-live` прави даден раздел от DOM `polite` или `assertive` за известия в дървото за достъпност.

Live region е част от DOM, чието съдържание — когато се промени — се обявява автоматично на потребителите на екранни четци. Обявяването се извършва без преместване на фокуса, без да се налага потребителят да навигира до съответния елемент и без да се изисква опресняване на страницата.

Live regions са механизмът зад всяко известие от типа „Известие: Артикулът е добавен в количката”, зад всяко съобщение за валидиране на формуляр от типа „Грешка: Полето за имейл е задължително” и зад всяко актуализиране на броя резултати при търсене, което потребителят на екранен четец действително чува.

Основният атрибут

Най-простият live region е div с aria-live="polite":

<div aria-live="polite" id="status">
  <!-- съдържанието тук ще бъде обявено при промяна -->
</div>

Когато JavaScript вмъква текст в #status, екранният четец обявява новия текст при следващата естествена пауза — без да прекъсва текущото четене на потребителя.

Polite и assertive

aria-live има две операционни стойности:

  • polite — изчаква потребителят да е в бездействие, след което обявява. Подходящо за повечето известия: потвърждения, брой резултати от търсене, съобщения за статус.
  • assertive — прекъсва текущото четене и обявява незабавно. Използва се само за наистина спешни съобщения: критични грешки, предупреждения за изтекла сесия, чувствителни спрямо времето сигнали.

Прекомерната употреба на assertive е най-честата грешка при работа с live regions. Всяко дребно известие, което използва assertive, превръща екранния четец в постоянен прекъсвач и в крайна сметка кара потребителя да деактивира live region изцяло.

Алтернативи чрез ARIA роли

Няколко ARIA роли подразбират aria-live автоматично:

  • role="alert" → поведение като aria-live="assertive".
  • role="status" → поведение като aria-live="polite".
  • role="log" → polite, с концептуалния намек за журнал само с добавяне (история на чат, изход на конзола).
  • role="timer" → polite, за таймери за обратно броене.

Изборът на роля често е по-ясен от директното задаване на стойност за aria-live — той документира предназначението на региона.

Чести грешки на практика

  • Live region е добавен едновременно със съдържанието. ARIA обявява само промени в live regions, които вече са съществували в DOM. Вмъкването на <div aria-live="polite">Заредено</div> като единичен блок не предизвиква обявяване — регионът и съдържанието са пристигнали едновременно. Решение: live region трябва да се намесе в DOM от зареждането на страницата, а съдържанието да се добави по-късно.
  • Твърде бързи актуализации. Многократното вмъкване на текст в live region в рамките на секунда изчиства предишното обявяване, преди да е приключило. Потребителят чува фрагменти. Трябва да се добавят throttle или debounce механизми.
  • Управлявани от модален прозорец обявявания, при които е по-подходящо преместване на фокуса. Ако умисленото действие на потребителя е предизвикало съобщението, преместването на фокуса към него (или към свързан контрол) е по-добро решение от разчитането на live region. Live regions са предназначени за пасивни известия.
  • Декоративен шум в live region. Live region, съдържащ освен съобщението още спинери за зареждане, икони и времеви маркери, кара екранния четец да прочита всичко при всяка актуализация. Съдържанието на региона трябва да се ограничи до самото съобщение.