屏幕阅读器(例如Jaws)的可访问性

4
我的一位同事向我反映了他在项目中遇到的问题。由于我对屏幕阅读器和技术缺乏经验,无法帮助他,因此我转向你们这些自豪而强大的SO用户群体。
TLDR版摘要:我们在UpdatePanel中的网格在屏幕阅读器中无法工作。可能与AJAX工具包有关?
请问有人能提供帮助或建议下一步可以采取哪些步骤吗?
以下是我从同事那里收到的内容(重点是我自己加的,希望提高可扫描性):
我目前正在进行无障碍性工作,并在使用Ajax的页面遇到了一些问题。我使用屏幕阅读器测试页面的无障碍性。屏幕阅读器通过音频(文本转语音)帮助用户识别或解释屏幕上显示的内容,然后将信息传输给用户。这对于盲人、视力受损、文盲或学习障碍者非常有帮助。以下是屏幕阅读器的简要概述。屏幕阅读器拍摄网页快照并将内容放置在虚拟缓冲区中。屏幕阅读器使用虚拟缓冲区允许用户浏览内容。如果使用脚本更改内容,则需要将其传递给屏幕阅读器。没有发现内容更改的机制,屏幕阅读器用户可能根本不会被通知内容已更改,或只会被通知内容已更改,但需要阅读整个文档才能发现确切的更改内容。在测试时,我使用了两种类型的屏幕阅读器:Access To Go 3.0.76和Jaws 10.0。
我的测试结果表明,在具有更新面板内网格视图的页面(例如典型的搜索页面),屏幕阅读器通常会读取页面上所有信息(搜索条件)之后进行搜索。按下搜索按钮后,会生成包含列标题和结果集的网格视图。屏幕阅读器没有获取通知新内容已写入页面的信息,因此听到了静音。一位Microsoft员工推荐了一种技术,涉及在更新面板中插入一个隐藏的IFrame,该IFrame将触发屏幕阅读器导航到更新的内容并读取它。该网站解释了如何仅使用UpdatePanel控件实现可访问性。我测试了这种技术,并没有成功使其正常工作。它会呈现一个iframe,但屏幕阅读器仍然不知道页面有更新。
我们的AjaxControlToolKit版本为1.0.11119.0,不提供ARIA(Accessible Rich Internet Applications)实时区域标记。实时区域表示可能发生内容更改而元素没有焦点,并向辅助技术提供有关如何处理这些内容更新的信息。 W3C已推荐了如何组织页面内容的语义,基本上为页面上的每个元素赋予角色,以便辅助技术可以向用户传达适当的信息。我不确定这在技术上意味着什么。
2个回答

1

好的,这完全取决于您想要向用户提供的更新的优先级,请记住不要让屏幕阅读器变得更加冗长,您可能需要浏览ARIA实时区域,并根据优先级将更新标记为polite、atomic或assertive。


1

AJAX网页对于屏幕阅读器来说并不是问题,至少对于Jaws来说是这样的,而且这已经是两年前的事情了(我开发了一些带有大量AJAX的Web应用程序,在Jaws上运行得非常好)。

无论如何,您应该使用良好的屏幕CSS布局和HTML锚点以获得更好的可访问性(标题、alt、tabindex、label)。

如果您真的担心可访问性问题,您应该通过iframe加载所有内容,并使用回调来更新父容器(一个小的<script>标签,它会将iframe内容更新到父容器DIV中)。还可以查看PORK.Iframe(http://schizofreend.nl/Pork.Iframe)。

编辑:这里有一些很好的东西:Sitepoint关于AJAX和屏幕阅读器的文章


谢谢你的帖子,Adrian!我会把这个传给我的同事,让他在他的项目上试一试,希望能解决问题。我会告诉你的! - Jay S
1
看起来在我们的情况下,iframe和script解决方案并没有奏效。UpdatePanel中的网格结果无法被识别。我们正在寻找一种替代方案,以不使用UpdatePanel来显示我们的结果。如果这个方案可行,我会将其发布为答案。 - Jay S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接