总体而言,您不需要触发“重新阅读”,并且取决于您的 UI,这可能不是一件好事。
我的经验是使用 angular.js(作为可访问性人员而不是开发人员),我们的总体方法是管理焦点而不是触发重读。(我们进行了广泛的可访问性测试。)
从 UI 的角度来看(主要针对屏幕阅读器用户),关键是选择链接(例如about.html
)应该带您到某个地方。
在这种情况下,放置焦点的适当位置将是关于“页面”内容区域的顶部,希望是<h1>
.
为了使它起作用,目标元素应该可以通过脚本获得焦点,因此tabindex
除非它是链接或表单控件,否则可能需要:
<h1 id="test" tabindex="-1">
这-1
意味着它不是默认的 tab 顺序,但可以通过脚本获得焦点。在WAI-ARIA 创作实践中查看更多信息。
然后在加载新内容的函数末尾,包括 tabindex 属性,添加如下内容:
$('#test').attr('tabindex', '-1').css('outline', 'none');
$('#test').focus();
动态添加tabindex
时,最好在focus()
函数之前的一行中这样做,否则它可能无法工作(我记得用 JAWS 测试过)。
为了测试这一点,我会使用:
- 英伟达和火狐,Windows
- Jaws 和 IE,Windows
在 Safari/OSX 上使用 VoiceOver 进行测试也很好,但工作方式不同,并且可能不会遇到与基于 Windows 的屏幕阅读器相同的问题。
你会遇到很多与 Chrome/NVDA 相关的问题,因为它没有得到很好的支持,最终用户不太可能使用它。IE 对 NVDA 没问题,但Firefox 是最好的。
总体而言,值得了解 WAI-ARIA 创作实践,尤其是在 HTML 中使用 ARIA。即使您使用的是 JS 应用程序,浏览器(以及屏幕阅读器)也会解释生成的 HTML,因此建议仍然相关。
最后,如果您在没有用户按空格/回车键来激活某些内容的情况下更新页面内容,您可能会发现 JAWS/NVDA 不知道新内容,因为它们的“虚拟缓冲区”尚未更新。在这种情况下,您可能需要添加一个JS shim 以使其更新,但只有在您在测试中遇到问题时才这样做,它不应该是一个全局补丁。