Во-первых, в вашем примере кода указана противоречивая информация. Использование role="alert"
дает вам неявное aria-live="assertive"
, но вы также указываете aria-live="polite"
. Я бы порекомендовал удалить role="alert"
. Наличие aria-live="polite"
достаточно.
Однако, если вы удалите роль из <spinny>
(что, я полагаю, является пользовательским тегом html?), Тогда ваш aria-label
может не соблюдаться, поскольку вещам с метками aria часто требуется дополнительная роль. на ярлык для того, чтобы ярлык читался программой чтения с экрана. См. « Практическая поддержка: aria-label, aria-labelledby и aria-описано by »
Но, я думаю, вы все равно могли неправильно использовать метку aria. Ваш регион должен выглядеть примерно так:
<div aria-live="polite" class="sr-only" id="myspinny"></div>
(См. Что такое sr-only в Bootstrap 3? для класса "sr-only". Он будет визуально "скрывать" <div>
, так что любой текст, который вы поместите в него, не будет виден зрячему пользователю, но все равно будет доступен пользователям программы чтения с экрана.)
Когда данные загружаются, вы должны вставить текст (через javascript) в « myspinny », чтобы он выглядел так:
<div aria-live="polite" class="sr-only" id="myspinny">Loading Page</div>
Поскольку <div>
является действующим регионом, будет объявлен текст («Страница загрузки»).
Когда загрузка данных закончится и вы захотите удалить счетчик, введите новый текст в " myspinny ", чтобы он выглядел так:
<div aria-live="polite" class="sr-only" id="myspinny">Data Loaded</div>
и программа чтения с экрана скажет «Данные загружены».