VoiceOver не реагирует на привязки и корректно меняет фокус на iOS - PullRequest
2 голосов
/ 14 июня 2019

Я задавал подобные вопросы до , но я не могу обрести спокойствие, пока не нашел обходной путь:

VoiceOver на iOS - это только программа чтения с экрана, с которой я столкнулся, которая, кажется, не обрабатывает якоря и JavaScript element.focus() работают правильно.

Проверьте мой блог .Там вы увидите классическую skip to content ссылку и кнопку scroll to top.Ссылка - это обычный якорь, целью которого является div с идентификатором main.Кнопка запускает анимацию, но так как у нее нет нужного эффекта для слепых, я также заставил ее переместить фокус на ссылку skip to content.Дважды нажмите на любой из вышеупомянутых элементов управления, когда VoiceOver включен.Фокус не будет перемещен.Я протестировал это в приложениях для iOS для Safari, Firefox, Google Chrome и iSource.

Теперь перейдите на любое другое устройство, будь то телефон Android или компьютер с Windows.Включите программу чтения с экрана.Насколько я могу судить, он всегда работал (протестировано с Microsoft Edge, Google Chrome и Internet Explorer).

HTML-код для привязки:

<a href="#main" id="top-link">Skip to content</a>
<!-- ... -->
<div id="main" role="main">
<!-- ... -->
</div>

JS для кнопки:document.getElementById ('scroll-to-top'). addEventListener ('click', function () {document.getElementById ('top-link'). focus ();});

Ничего особенного,право?И нет, tabindex="-1" на главном div не решает мою проблему с якорем.Что работает, если якорь ссылается на ссылку, но должен содержать некоторый видимый текст, например,

<a id="anchorTarget">&nbsp;</a>

, не работает.Кто-нибудь наткнулся на хороший, надежный обходной путь, или мне просто придется смириться с тем фактом, что смена фокуса якорей / JavaScript ничего не делает для пользователей VoiceOver на iOS?

1 Ответ

3 голосов
/ 21 июня 2019

Это известная проблема на iOS .Есть блог , в котором есть несколько хакерских решений, но реальная ответственность лежит на Apple, чтобы решить эту проблему.

...