VoiceOver无法响应锚点并无法正确更改对iOS的关注

时间:2019-06-14 12:55:22

标签: javascript html ios accessibility voiceover

我已经问过像这样的问题before,但是直到找到解决方法后,我才能放心:

iOS上的 VoiceOver是我遇到的唯一屏幕阅读器,它似乎无法正确处理锚点和JavaScript element.focus()功能。

签出my blog。在那里,您会看到经典的skip to content链接和一个scroll to top按钮。该链接是常规锚,其目标是ID为main的div。该按钮触发了一个动画,但是由于它没有给盲人带来理想的效果,因此我也使它将焦点移到了skip to content链接上。打开VoiceOver时,双击上述任一控件。焦点将不会移动。我在Safari,Firefox,Google Chrome和iSource的iOS应用中对此进行了测试。

现在转到任何其他设备,无论是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();     });

没什么好看的,对吧?不,主div上的tabindex="-1"不能解决我的锚点问题。可行的是,如果锚点指向链接,但其中必须必须包含一些可见的文本,例如

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

不起作用。有没有人偶然发现一个好的,可靠的解决方法,还是我不得不忍受我的锚点/ JavaScript焦点更改对iOS上的VoiceOver用户没有任何作用的事实?

1 个答案:

答案 0 :(得分:2)

这是known problem on iOS。有一个blog带有一些棘手的解决方法,但解决这个问题的真正责任在于苹果。