我已经问过像这样的问题before,但是直到找到解决方法后,我才能放心:
iOS上的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"> </a>
不起作用。有没有人偶然发现一个好的,可靠的解决方法,还是我不得不忍受我的锚点/ JavaScript焦点更改对iOS上的VoiceOver用户没有任何作用的事实?