Как запретить экранному диктору Windows читать скрытые HTML-теги?

У меня есть HTML-страница с несколькими скрытыми элементами, которые становятся видимыми только при определенных обстоятельствах.

Когда я устанавливаю фокус на оболочке страницы (чтобы прочитать все содержимое), экранный диктор Windows считывает все элементы, даже скрытые.

Я пробовал использовать aria-hidden = "true", CSS display: none, скрытый атрибут HTML5, все они полностью игнорируются. Пока что единственный работающий механизм, который я обнаружил, - это удалить эти элементы из DOM перед установкой фокуса на оболочку. Но это не идеальное решение.


person Patrick Silva    schedule 24.07.2013    source источник
comment
Это не идеально, но это единственное, что я считаю.   -  person Mohammad Areeb Siddiqui    schedule 24.07.2013
comment
Отбросьте рассказчика, это должен быть ваш последний вариант, это все равно, что пытаться заставить HTML5 работать с IE7 - у вас будут плохие времена. Возьмите копию NVDA (она бесплатна) и посмотрите, что произойдет. Если код работает, это не проблема. Если NVDA захлебнется, нам понадобится соответствующий код.   -  person Ryan B    schedule 24.07.2013
comment
Это необходимо для работы с экранным диктором, в данном случае это невозможно: S   -  person Patrick Silva    schedule 24.07.2013
comment
кто говорит? Единственный случай, когда рассказчик считается приемлемым инструментом, - это когда вы находитесь в закрытой среде, например в библиотеке. Собственная документация MS даже утверждает это! Библиотеки и другие ресурсы больше не могут спорить о денежном аспекте, так как NVDA 1- бесплатна, а 2- дает сопоставимый доступ с JAWS. Итак, я бы сказал, что обучение клиентов важнее реализации. Единственное, что нужно сделать, это создать представление только для текста.   -  person Ryan B    schedule 26.07.2013


Ответы (3)


примените role="presentation" tabindex="-1" к вашим элементам, которые были применены aria-hidden.

person albert    schedule 24.07.2013
comment
Даже добавив эти два атрибута, он все равно будет читать. Вы можете проверить следующий тест, просто щелкните контент, чтобы получить фокус: jsfiddle.net / K7vAs / 4 / embedded / result - person Patrick Silva; 25.07.2013

Просто боролся с тем же самым и выяснил, что если есть элемент с role="main" без явного определения _2 _ / _ 3_, все его содержимое, включая все скрытые элементы, добавляется в деревья MSAA и UIA, которые затем считываются экранным диктором. Добавление явного свойства aria решает проблему, но, по-видимому, также не позволяет экранному диктору автоматически начинать чтение основного содержимого.

Хорошо то, что AccChecker предупреждает об этих проблемах. Видимо, лучше последовать его совету, хотя было бы неплохо иметь автоматическое считывание контента.

person harriha    schedule 10.11.2014
comment
Я думаю, твоя проблема была в обратном. Извините, если я не разъяснил свою точку зрения. Проблема, с которой я столкнулся, заключается в том, что экранный диктор читает контент, который я не хочу, чтобы он читал, даже если я применяю aria-hidden и role = presentation, как только оболочка попадает в фокус. - person Patrick Silva; 06.05.2015
comment
Итак, если вы добавите явный aria-label="foo" к этому скрытому элементу, решит ли это проблему? - person harriha; 07.05.2015

По-видимому, это больше не проблема MS Edge! Ура! Если элемент скрыт с помощью CSS display: none, он не читает его содержимое.

person Patrick Silva    schedule 10.08.2015