2013-07-24 5 views
1

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

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

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

+0

Его не идеально, но его единственное, что я верю. –

+0

Капля рассказчика, это должен быть ваш последний вариант, это похоже на попытку заставить HTML5 работать с IE7 - у вас будет плохое время. Возьмите копию NVDA (она бесплатна) и посмотрите, что произойдет. Если код работает, это не проблема. Если NVDA захлебнется, нам понадобится применить код. –

+0

Требуется работать с рассказчиком, а не в этом случае: S –

ответ

0

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

+1

Даже добавление двух атрибутов, которые оно все еще читает. Вы можете проверить следующий тест, просто нажмите на контент, чтобы получить фокус: http://jsfiddle.net/K7vAs/4/embedded/result/ –

0

Просто боролись с той же вещи, и выяснили, что если есть элемент с role="main" без явного aria-label/aria-labelledby определено, все его содержание, включая все скрытые элементы, добавляется к MSAA и МАУ деревьев, которые затем считываются рассказчиком. Добавление явного свойства aria решает проблему, но, по-видимому, также прекращает рассказчик начинать автоматически читать основной контент.

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

+0

Я думаю, что ваша проблема была противоположной. Извините, если я не дал понять. Проблема, с которой я сталкиваюсь, заключается в том, что рассказчик читает контент, который я не хочу читать, даже если я применяю aria-hidden и role = "presentation", как только он обернется в фокусе. –

+0

Итак, если вы добавите явный 'aria-label =" foo "' к этому скрытому элементу, решит ли он проблему? – harriha

0

Видимо, это не проблема на MS Edge! Ура! Если элемент скрыт с отображением CSS: нет, то он не читает его содержимое.