iPhone VoiceOver не произносит текст стрелки

У меня есть эта протестированная страница http://fiddle.jshell.net/wt3dqm8b/1/show/light/ (который можно отредактировать здесь https://jsfiddle.net/wt3dqm8b/1/).

К сожалению, когда вы заходите на него с iPhone с включенным VoiceOver (Settings -> General -> Accessibility -> VoiceOver ON), вы слышите «Link One link» для ссылки «Link One» (что хорошо), но НЕ слышите то же «Link One link» при нажатии на стрелке ">". Только «ссылка» произносится при нажатии на стрелку «>». Было перепробовано много способов, но ни у кого не вышло нормально.

Как изменить html-код, чтобы тот же текст «Link One link» произносился при нажатии на стрелку «>»?

Вот код со страницы выше:

HTML:

<ul  class="master secondary">
  <li  aria-expanded="false" class="main" tabindex="0" aria-label="Link One">
   <a  tabindex="-1" href="https://google.com">
   <span ><span > Link One </span></span>
   <i  class="fa fa-angle-right"></i>
   </a>
  </li>
  <li  aria-expanded="false" class="main" tabindex="0" aria-label="Link Two">
   <a  tabindex="-1" href="https://google.com">
   <span ><span > Link Two </span></span>
   <i  class="fa fa-angle-right"></i>
   </a>
  </li>
</ul>

и CSS:

@import url('//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-theme.min.css');
body {
  margin-top: 60px;
}


.master {
  margin: 0;
  padding: 0;
  list-style: none;
}

.master .main {
  border-bottom: 1px solid #ccc;
}

.master .main>a {
  position: relative;
  display: block;
  padding: 20px;
  color: green; 
  text-decoration: none;
  background-position: 15px;
}

.master .main > a .fa-angle-right {
  position: absolute;
  top: 50%;
  right: 30px;
  margin-top: -8px;
}

P.S. Конечно, я не хочу существенно менять html-код, чтобы:

  • для программы чтения с экрана JAWS существенных изменений не ожидается,
  • такое же поведение сохраняется и для используемой клавиатуры - все элементы навигации фокусируются только один раз при использовании клавиши Tab, пожалуйста, никаких изменений в этом поведении.

ОБНОВЛЕНИЕ: даже в приведенном ниже коде

<ul  class="master secondary">
  <li aria-expanded="false" class="main">
   <a  target="_self" href="https://google.com">
   <span ><span > Link One </span></span>
   <i class="fa fa-angle-right" title="Time to destination by car"><span class="sr-only">This text is not pronounced with VoiceOver - why?</span></i>
   </a>
  </li>
  <li aria-expanded="false" class="main">
   <a target="_self" href="https://google.com">
   <span ><span > Link Two </span></span>
   <span class="fa fa-angle-right" title="Time to destination by car"><span class="sr-only">This text is not pronounced with VoiceOver - why?</span></span>
   </a>
  </li>
</ul>

Спасибо.


person Haradzieniec    schedule 02.01.2019    source источник
comment
Я действительно не понимаю, почему ваш код такой сложный. Зачем вам нужен tabindex на li, если внутри него есть только фокусируемый элемент (a с атрибутом href)? Почему у li есть aria-label, особенно тот, который дублирует текст ссылки? Зачем нужны ссылки target="_self"? Грубо говоря, все это выглядит лишней чушью.   -  person Tsundoku    schedule 02.01.2019
comment
@ChristopheStrobbe Вы правы, я обновил приведенный выше код, удалив target = _self, поскольку он не имеет отношения к этому вопросу (код был упрощен). По другому ... Есть предложения, как заставить работать? Спасибо.   -  person Haradzieniec    schedule 02.01.2019
comment
@ChristopheStrobbe, я добавил еще один пример с классом sr-only (в самом конце моего вопроса) и на основе вашего комментария. По-прежнему не повезло.   -  person Haradzieniec    schedule 02.01.2019


Ответы (1)


Я запустил ваш обновленный код с вашим CSS и классом "только для sr" из Что есть ли sr-only в Bootstrap 3? и он отлично работал с VoiceOver. Я использую iOS 12.1.2 на своем iPhone.

Я слышал "этот текст не произносится ..." при переходе по ссылке.

Все, что содержалось внутри ‹a>, рассматривалось как одна «позиция табуляции» в VoiceOver, поэтому я не мог провести пальцем по стрелке «>». Я ожидал такого поведения. Вы не должны делать стрелку «>» отдельной ссылкой или вкладкой, если «первая ссылка» имеет то же назначение (href), что и стрелка «>».

person slugolicious    schedule 02.01.2019
comment
Я согласен с вами, что я не должен делать стрелку ›отдельной ссылкой или вкладкой, если первая ссылка имеет то же место назначения (href), что и стрелка›. И я не делаю этого, как вы видите в моем предложенном коде: href обертывает все. Тестируем свой результат. Спасибо за помощь. - person Haradzieniec; 03.01.2019
comment
Я обновил iOS до версии 12.1.2 и вставил обновленный код сюда: fiddle.jshell .net / wt3dqm8b / 9 / show / light Я считаю, что это тот код, который вы пробовали, верно? Не произносится, для меня этот текст не произносится .... Просто ссылка. Сам код можно увидеть здесь: jsfiddle.net/wt3dqm8b/9 Что-то все еще упускается. - person Haradzieniec; 03.01.2019
comment
Я только что попробовал ваш новый fiddle.jshell.net/wt3dqm8b/9/show/light и у меня все работает нормально. Я снова слышу, что этот текст не произносится ... когда смахиваю вправо, пока не доберусь до ссылки. И значок ›не отображается как отдельное смахивание. - person slugolicious; 04.01.2019