Ваш код правильный. По-видимому, "1 позади" было обнаружено . По ссылке похоже, что использование aria-atomic="true"
может решить проблему. Однако приведенный пример работает правильно в IE9 и Firefox.
Если вы еще не наткнулись на них, посмотрите тестовые случаи на codetalks и availableculture.org . Есть много тонких различий, о которых нужно знать. Только не удивляйтесь, когда тесты не пройдут! За последний год я столкнулся с несколькими (неадекватными) уловками, которые могут вам помочь.
Метод 1: role="alert"
Роль alert
равна , которая, как предполагается, эквивалентна aria-live="assertive"
, но более ранние версии JAWS не обрабатывали ее должным образом. Ознакомьтесь с этими примерами за февраль 2011 года, в которых говорится:
Если вы хотите поддерживать JAWS 10 в IE7 или IE8, то лучше всего удвоить количество предупреждений с ролью role = "alert" и aria-live = "assertive". Хотя это несколько избыточно, поскольку, по определению, роль оповещения должна обрабатываться как утверждающая область реального времени, это позволяет JAWS 10 автоматически объявлять обновленное содержимое оповещения в этих двух браузерах.
И Firefox4 +, и IE9 не требуют этого. Но это будет примерно так:
<div id="statusbar" role="alert" aria-live="assertive">
Contents will be spoken when changed
</div>
Способ 2: взлом фокуса
Динамически создавая элемент DOM и заставляя его фокусироваться, вы можете «обмануть» большинство программ чтения с экрана при чтении содержимого. Это хакерский, но эффективный ... и в чем-то смысл примера Create and Focus . Упрощенно, вы можете сделать что-то вроде этого:
<div id="statusbar" role="alert" tabindex="-1"></div>
$('#statusbar')
.clear()
.append('<div>' + newString + '</div>')
.children().first().focus()
;
Просто скрытие / показ содержимого вместо этого на самом деле работает довольно хорошо большую часть времени. Однако фокус VoiceOver задерживается на элементе и не говорит о его содержимом при повторном отображении. Таким образом, удаление его из DOM представляется наиболее надежным методом на данный момент. Мне это не нравится, но таково положение вещей.