【发布时间】:2018-06-11 12:46:02
【问题描述】:
以下是我们的网络应用程序的虚拟实现 https://roleapplication.herokuapp.com/index.html
appArea 元素具有角色应用程序,因为它包含高度复杂的小部件,例如 ms paint/editor/ms office。 Navigator 包含标准的 Web 小部件,例如下拉菜单和按钮
HTML 类似于下面指定的内容。
<body>
<div class="appArea" role="application">
.......//Complex widgets
</div>
<div class="toolbar">
......//Buttons, dropdowns
</div>
</body>
appArea 的键盘功能由其代码处理,而对于工具栏,我们依赖于屏幕阅读器的键盘处理,因为它们在 Web 浏览器中工作。
问题 - 当用户在导航器区域按下 Escape 时,我们会模糊导航器,因此默认情况下焦点会转到正文。 现在焦点在正文中,然后箭头键将焦点移动到工具栏,因此用户永远无法进入 appArea。如果焦点在 appArea 中,它可以正常工作。
期望 - 当焦点在身体上时,按下箭头焦点应该在 appArea 内,然后 appArea 将获得键而不是屏幕阅读器。
在页面加载和不带屏幕阅读器时检查向下箭头键功能。
键盘笔记
- 按 f6 从小部件 1 转到小部件 2 再到导航器
- 您可以使用小部件中的箭头/Tab 键进行导航。
- 使用 f6 移动到导航器并按 Tab 转到任何按钮,然后按 Escape。现在重点是身体(检查使用 document.activeElement)。
- 如果没有屏幕阅读器,即使没有焦点,我们的小部件也会捕获正文上的键并对其进行处理。
- 但是对于屏幕阅读器,当正文具有焦点并且用户按下向下箭头时,屏幕阅读器会消耗键并将焦点移动到导航器而不是具有小部件的应用程序区域,并且用户无法使用箭头键或其他键转到 appArea哪个屏幕阅读器使用。
注意-
- 如果我们将角色应用程序交给完整的应用程序,那么导航器的默认箭头键处理将停止工作,这是不需要的
- 无法删除角色应用程序,因为 appArea 非常复杂,数百个小部件都有其键盘处理功能。
【问题讨论】:
标签: accessibility wai-aria screen-readers jaws-screen-reader nvda