我在做一个访问的Web应用程序。其中一个功能是一个按钮,允许用户滚动到页面的某个部分。我使用window.scrollTo(X,Y)此功能。
现在,使用测试我的应用程序中内置的Mac VoicerOver,我发现,虽然我可以点击按钮,并没有问题滚动,在滚动后,VoiceOver会不读什么。相反,我必须点击鼠标一个,或使用键盘等价物,使其读取后滚动在屏幕上的内容。
恐怕有些用户可能没有意识到,他们需要再点击一下,点击按钮后。我有两个可能的解决方案:
内容我想在屏幕阅读器来阅读包装在一个标签。
如果只滚动页面,那么大多数屏幕阅读器的用户不会在意你滚动。有限或没有眼光,无论是屏幕滚动与否并不重要,因为屏幕不能被看到。
但是,如果你是滚动页面才能把某一元素进入视野,那么,将有利于屏幕阅读器的用户了。
这听起来像你正在试图做的后者:
允许用户滚动到页面的某个片段
在这种情况下,你还需要通过focus()
JavaScript调用把键盘焦点元素上。移动焦点将导致VoiceOver会读的内容。但将焦点移动到一个本地不可聚焦元件(例如,<h2>
或<section>
或<p>
),所述接收元件将需要tabindex="-1"
。
<h2 tabindex="-1" id="myh2">some heading</h2>
然后某处你有这样的javascript:
var element = document.getElementById("myh2");
element.focus();