c# - 屏幕阅读器的辅助功能(例如 Jaws)

标签 c# .net ajax accessibility jaws-screen-reader

我的一位同事在他的一个项目中遇到问题来找我。无法帮助他,由于我缺乏屏幕阅读器和技术的经验,我求助于你们,骄傲而强大的 SO 用户群体。

TLDR-folks 总结: 我们在 UpdatePanels 中的网格在屏幕阅读器中不起作用。可能与 AJAX 工具包有关?

任何人都可以就我们接下来可以采取的步骤提供帮助或建议吗?

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


I’m presently working on accessibility and I ran into some issues when it came to pages using Ajax. I used screen readers to test the page’s accessibility. A screen reader attempts to identify or interpret what’s being displayed on the screen with the help of audio (text-to-speech) and then transmits the information to the user. This is very helpful for people who are blind, visually impaired, illiterate or learning disabled. Here’s a brief summary of how a screen reader works. The screen reader takes a snapshot of the web page and places the content in a virtual buffer. The screen reader uses the virtual buffer to allow the user to navigate through the content. If the content is changed with scripting, then this needs to be relayed to the screen reader. Without a mechanism to discover what has changed, a screen reader user might not be notified that the content has changed at all, or only be notified that the content has been changed, but will be required to read the whole document to discover exactly what has changed. For testing, I used two types of screen readers, Access To Go 3.0.76 and Jaws 10.0.

My findings while testing were that on the pages that have a gridview within an update panel, a typical search page for example, the screen reader would read, as per usual, all the information on the page before searching (search criteria). Upon pressing the search button, our gridview containing the column headers and the result set is generated. The screen reader does not get the information that would inform it that new content has been written to the page therefore silence is heard. A technique has been recommended by a Microsoft employee that involves inserting a hidden IFrame within the update panel that would trigger the screen reader to navigate to the updated content and read it. The web site explains how to achieve accessibility only with the UpdatePanel control. I’ve tested this technique and had no success in making it work. It renders an iframe but the screen reader still doesn’t know about an update to the page.

Our AjaxControlToolKit version is 1.0.11119.0 and does not provide ARIA (Accessible Rich Internet Applications) live region markup. Live regions indicate that content changes may occur without the element having focus and provides the assistive technology information on how to process those content updates. The W3C has recommended a semantic on how to organize the content of a page, basically giving a role to every element on the page so that assistive technologies can convey the appropriate information to the user. I’m not sure what this implies in terms of where we are technologically.

最佳答案

AJAX 网页对于屏幕阅读器来说不是问题,至少对于 Jaws 来说是这样,那是大约 2 年前的事(我开发了一些带有大量 AJAX 的网络应用程序,这些应用程序与 Jaws 配合得很好)。

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

无论如何,如果您真的担心可访问性,您应该通过 iframe 加载所有内容并使用回调来更新父级(一个小的 <script> 标签,用 iframe 内容更新父容器 DIV)。也看看 PORK.Iframe ( http://schizofreend.nl/Pork.Iframe )。

编辑:那里有好东西:Sitepoint article about AJAX and screenreaders

关于c# - 屏幕阅读器的辅助功能(例如 Jaws),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1256742/

相关文章:

c# parallel foreach 循环查找索引

c# - Entity Framework 代码优先 : Set unique key constraint is not working

javascript - ajax 加载的内容与普通内容?

javascript - withCredentials 和通配符 * - 'Access-Control-Allow-Origin' header 问题

c# - 如何从数据表中获取最高值?

c# - 未引用库时 Visual Studio 选择了错误的构造函数?

c# - 从 Windows 窗体应用程序打开 wpf 窗口时缺少图像

c# - 系统异常 : 'Cannot create a table without columns, 是否具有公共(public)属性?

.net - Filehelpers - 在每个字段周围使用双引号导出

javascript - Visual Composer/Jquery 动画无法正常工作调试错误