【发布时间】:2014-06-24 19:24:40
【问题描述】:
我正在努力使我的单页 HTML5 应用程序对屏幕阅读器更加友好。该应用程序的基本结构具有静态标题栏和导航菜单,以及一个“主” div 元素,该元素显示大量动态变化的“页面”数据。
目前我已将aria-live="assertive" 属性添加到主 div 中,这样当用户触发更改页面内容的事件时,屏幕阅读器将停止阅读旧内容并开始阅读新内容。
一些“页面”大量使用视觉数据(图表、图形、表格),因此为了更有效地将数据传递给屏幕阅读器,我使用了隐藏视觉元素的模式,而不是传递信息通过屏幕外文本。
当我打开浏览器并直接导航到显示这些元素的状态时,这可以正常工作。但是,如果我从应用程序的其他位置开始并导航到此内容,NVDA 将读取 应该 em> 被隐藏。
<div id="main" aria-live="assertive">
...
<div class="offscreen"> Text describing chart </div>
<div class="chart" aria-hidden="true"> Graphically drawn chart data... </div>
...
</div>
我目前最好的猜测是 aria-live 以某种方式优先于 aria-hidden,但希望有人能有更多经验,或者有更好的模式来实现所需的行为。我尝试了另一种常见的技术,该技术涉及在呈现内容后关注页面的标题元素,但是这样做时,NVDA 仅读取该标题,而不是整个实时页面内容。
(注意:我正在使用 NVDA 和 FireFox 进行测试。)
【问题讨论】:
-
您使用的是最新版本的 NVDA (2014.something) 吗? Firefox 29+(当前:30)还是像 28 或 24 扩展支持版本 (ESR) 这样的澳大利亚前版本?
标签: javascript html accessibility single-page-application wai-aria