Продвижение VoiceOver к указанному элементу в мобильном Safari - PullRequest
3 голосов
/ 12 февраля 2012

У меня возникают проблемы с поиском способа продвижения VoiceOver к определенному элементу в Mobile Safari.

Пока что пробовал:

<a href="#target">Skip</a>
...
<a name="target"></a>

Это (иногда) продвигается к цели, если страница прокручиваема, но не работает согласованно на длинных и коротких страницах, а иногда приводит к тому, что следующий элемент не будет прочитан!

Я также пробовал:

<a href="javascript:someElement.focus()">Skip</a>

К сожалению, это не работает для полей без ввода.

Более продвинутый, я попытался поместить ссылку перед элементом, который я хочу пропустить, и попытался установить для этого элемента значение aria-hidden="true", но по некоторым причинам это не работает для <header> элементов.

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

<a id="skip" href="javascript:$('header').insertBefore($('#skip'));">Skip</a>

К сожалению, это по-прежнему не приводит к автоматическому переходу к следующему элементу, и при выходе вы не запускаете событие размытия, поэтому у меня нет хорошего механизма для восстановления ссылки на исходное местоположение, когда пользователь перемещает курсор.

Кажется, это должно быть легко, и у меня заканчиваются идеи. Есть ли решения, которые сработали для всех вас?

1 Ответ

3 голосов
/ 20 июля 2012

Это работает на моем iphone (перемещает фокус клавиатуры и заставляет голос за кадром говорить контент):

<button onclick="document.getElementById('last').focus();">Move focus to bottom heading</button>

<div tabindex="-1" id="last">
<h2>dzoooong</h2>
<p>Heaps of new content</p>
<p>blablalbalblablabl</p>
</div>

Работает не на всех элементах, например не может переместить фокус непосредственно на h2.

...