Как сделать так, чтобы NVDA считывала элементы в одной строке по отдельности?

У меня проблема с программой чтения с экрана NVDA, поскольку она считывает все элементы в одной строке в одном блоке.

Например, со следующим кодом:

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Title</title>
        <style>
        nav > ul > li {
            list-style: none;
            display:inline-block;
        }   

        </style>
    </head>
    <body>
        <h1>Title 1</h1>
        <nav role="navigation">
            <ul>
                <li>
                  <a href="#">Link 1</a>
                </li>
                <li>
                  <a href="#">Link 2</a>
                </li>
                <li>
                  <a href="#">Link 3</a>
                </li>
                <li>
                  <a href="#">Link 4</a>
                </li>
            </ul>
        </nav>
    </body>
</html>

Это отобразит все навигационные ссылки в строке, что визуально правильно, но NVDA в режиме просмотра при прокрутке с помощью клавиш со стрелками будет читать все ссылки вместе. Пользователь не может перемещаться между каждой отдельной ссылкой, то есть невозможно оставаться на одной и выбирать ее.

То же самое происходит со ссылкой в ​​середине абзаца:

<p>NVDA will not stop on <a href="#">This link</a> so a user can select it.</a>

В моем примере навигации я меняю стиль, чтобы каждая ссылка находилась в отдельной строке:

        nav > ul > li {
            list-style: none;
            display:block;
        }   

Устраняет проблему для NVDA - пользователь может перемещаться между ссылками - но визуально не работает.

Единственный способ сделать его визуально правильным и заставить NVDA читать его отдельно - это отобразить каждую привязку как блок внутри элемента списка:

        nav > ul > li {
            list-style: none;
            display:inline-block;
        }   

        nav > ul > li > a {
            display: block;
        }

Но это кажется хакерским, и это не решение в каждой ситуации (например, это не сработает в пределах одного абзаца).

Есть ли атрибут, который я могу добавить, или какой-либо другой лучший способ заставить NVDA читать каждый элемент отдельно?

Эта проблема возникает во всех браузерах.


person Paul T Davies    schedule 22.01.2015    source источник


Ответы (1)


Вам не нужно ничего делать, пользователь может перейти по каждой ссылке и активировать их. Пользователь может в любой момент прервать считывание с помощью клавиши CONTROL. Также после того, как ссылка была прочитана, пользователь может использовать клавишу SHIFT-TAB для перехода назад к каждой ссылке. Также пользователь может использовать клавишу K для перехода между ссылками. Кроме того, пользователь может использовать NVDA + control + leftArrow, чтобы перемещаться назад по слову.

Ключевым моментом здесь является обеспечение фокусировки каждой ссылки с помощью TAB, гарантируя, что у нее есть атрибут href. Таким образом, <a>Not really a link</a> не будет идентифицирован как ссылка и не будет доступен для TAB.

Вот справочник по командам клавиатуры для NVDA http://community.nvda-project.org/documentation/userGuide.html

Если вы хотите изменить поведение по умолчанию, чтобы NVDA считывала ссылки, как если бы они были только по одной на строку, как это делает JAWS, выполните следующие действия:

  1. Перейдите в меню NVDA (вставьте | n).
  2. Зайдите в настройки.
  3. Выберите режим просмотра.
  4. Снимите второй флажок «Использовать макет экрана, если он поддерживается».
  5. Выберите ОК.
  6. Вернитесь в меню NVDA (вставьте | n).
  7. Выберите «сохранить конфигурацию». Если вы этого не сделаете, в зависимости от того, как вы настроили NVDA, это изменение может не сохраняться после перезапуска.
person unobf    schedule 23.01.2015
comment
Это требование нашего клиента, выдвинутое тестировщиком с ослабленным зрением, который ожидает, что сможет просматривать ссылки с помощью клавиши со стрелкой, как описано. - person Paul T Davies; 23.01.2015
comment
Это недопустимая проблема доступности, которую поднимает ваш тестировщик. - person unobf; 23.01.2015
comment
Клиента это не устраивает, и я не думаю, что это необоснованная проблема. Это действительно ухудшает пользовательский опыт. - person Paul T Davies; 23.01.2015
comment
Так работает программа чтения с экрана. Если вы хотите, чтобы профессиональное мнение убедило клиента, вам помогут такие компании, как deque.com. - person unobf; 23.01.2015
comment
Просто добавил инструкцию, как настроить NVDA для работы как JAWS - person unobf; 23.01.2015
comment
Это то, что мне нужно. Хотя было бы хорошо иметь способ заставить такое поведение. Возможно, обнаружите программу чтения с экрана и разместите ссылки на разных строках. - person Paul T Davies; 23.01.2015
comment
к сожалению, хотя обнаружение программ чтения с экрана возможно, это считается нарушением конфиденциальности. - person unobf; 23.01.2015
comment
Кроме того, это конец клина. В одну минуту вы обнаруживаете SR для небольшого изменения дизайна, а в следующую вы создаете отдельные страницы «только для текста». - person Paul T Davies; 25.01.2015