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

C# 屏幕阅读器的可访问性(例如Jaws),c#,.net,ajax,accessibility,jaws-screen-reader,C#,.net,Ajax,Accessibility,Jaws Screen Reader,我的一位同事来找我,他有一个项目有问题。由于我缺乏屏幕阅读器和技术方面的经验,无法帮助他,我求助于你们,这群引以为傲的SO用户 TLDR人员总结: UpdatePanel中的网格在屏幕阅读器中无法工作。可能是AJAX工具包的问题 有人能为我们下一步可能采取的措施提供帮助或建议吗 以下是我从同事那里得到的信息(重点是我的,而不是他的,希望提高可扫描性): 我目前正在研究无障碍性 当它出现时,我遇到了一些问题 使用Ajax访问页面。我曾经 屏幕阅读器以测试页面的 可访问性。屏幕阅读器 试图识别或解

我的一位同事来找我,他有一个项目有问题。由于我缺乏屏幕阅读器和技术方面的经验,无法帮助他,我求助于你们,这群引以为傲的SO用户

TLDR人员总结: UpdatePanel中的网格在屏幕阅读器中无法工作。可能是AJAX工具包的问题

有人能为我们下一步可能采取的措施提供帮助或建议吗

以下是我从同事那里得到的信息(重点是我的,而不是他的,希望提高可扫描性):


我目前正在研究无障碍性 当它出现时,我遇到了一些问题 使用Ajax访问页面。我曾经 屏幕阅读器以测试页面的 可访问性。屏幕阅读器 试图识别或解释 屏幕上显示了什么 借助音频 (文本到语音)然后传输 将信息发送给用户。这是 对盲人很有帮助, 视力受损、文盲或 学习障碍。这里有一个简短的介绍 屏幕阅读器工作原理的摘要。 屏幕阅读器拍摄屏幕的快照 打开网页并将内容放置在 虚拟缓冲区。屏幕阅读器 使用虚拟缓冲区允许 用户可以在内容中导航。 如果内容更改为 脚本,那么这需要 转发到屏幕阅读器。没有 发现发生了什么的机制 更改后,屏幕阅读器用户可能会 不会被通知内容已被删除 根本没有改变,或者只是得到通知 内容已经更改,但是 将被要求阅读全文 文档以准确地发现发生了什么 变了对于测试,我使用了两个 屏幕阅读器的类型、访问权限 3.0.76和钳口10.0.

我在测试时的发现是 在具有gridview的页面上 在更新面板中,典型的 搜索页面,例如,屏幕 读者会像往常一样阅读所有的内容 之前页面上的信息 搜索(搜索条件)。在上面 按下搜索按钮,我们的 包含列标题的gridview 并生成结果集。这个 屏幕阅读器无法获取 将通知它的信息 新内容已写入 页面因此安静下来。A 这项技术已被一位专家推荐 涉及 在中插入隐藏的IFrame 更新将触发 屏幕阅读器,以导航到 更新内容并阅读。网络 网站解释如何实现 仅使用 UpdatePanel控件。我已经测试过了 技术,但没有成功制作 它起作用了。它渲染一个iframe,但是 屏幕阅读器仍然不知道 页面的更新

我们的AjaxControlToolKit版本是 1.0.11119.0,不提供ARIA(可访问的富Internet 应用程序)活动区域标记。居住 区域表示内容发生了变化 可能在元素没有 聚焦并提供辅助 关于如何 处理这些内容更新。W3C 推荐了一个关于如何 组织页面的内容, 基本上是让每一个 元素,以便辅助 技术可以传递信息 向用户提供适当的信息。 我不确定这意味着什么 我们在技术上所处的位置


AJAX网页对屏幕阅读器来说不是问题,至少对Jaws来说是这样,那是大约两年前的事了(我用大量AJAX开发了一些web应用程序,这些应用程序对Jaws非常有效)

无论如何,您应该使用好的屏幕CSS布局和HTML锚来实现更好的可访问性(title、alt、tabindex、label)

无论如何,如果您真的担心可访问性,那么应该通过iframe加载所有内容,并使用回调来更新父容器DIV(使用iframe内容更新父容器DIV的一个小标记)。还可以看看PORK.Iframe()


编辑:这里有一些好东西:

好吧,这完全取决于你想给用户的更新的优先级,记住这一点,你不会让屏幕阅读器变得更加冗长,您可能希望浏览ARIA live区域,根据优先级,您可以将更新标记为Polyyte原子更新或断言更新

谢谢你的帖子,阿德里安!我将把它传递给我的同事,让他在他的项目中试用,希望它能解决这个问题。我会让你知道的!在我们的案例中,iframe和脚本解决方案似乎不起作用。网格导致无法识别UpdatePanel。我们正在研究一种替代解决方案,即在不使用UpdatePanel的情况下显示结果。如果这个方法有效,我会把它作为答案发布。