man*_*nan 3 javascript accessibility screen-readers nvda
我在div内有一个按钮集合,其中包含一些JavaScript以响应箭头键事件在它们之间移动焦点。
当我使用NVDA / Firefox / Windows进行测试时,似乎NVDA会覆盖我的箭头键处理程序,并根据其自身的规则移动焦点。这是一个问题,因为我的窗口小部件具有高度可定制性,动态性和响应能力-因此,移动焦点的规则非常复杂。
Voiceover和ChromeVox都不具有此行为。
我注意到向每个按钮添加role =“ gridcell”似乎可以解决此问题,但是我不希望这样做,因为这意味着屏幕阅读器不会将我的按钮视为按钮。除非绝对必要,否则我也真的不想更改html结构(例如,将每个按钮包装在另一个元素中)。
是否有一种方法(例如aria或专有属性)告诉NVDA不要将自己的箭头键行为应用于按钮?
如果所有按钮都位于容器(span 或 div)中,则可以将 role=application 添加到容器中,这将强制所有键盘事件转到您的应用程序而不是辅助技术。不过,应该非常谨慎地使用 Role=application。
<div role=application>
<button>alpha</button><br>
<button>beta</button><br>
<button>gamma</button><br>
</div>
Run Code Online (Sandbox Code Playgroud)
考虑到通过覆盖用户的预期行为,您将冒着创建完全无法使用甚至无法访问的界面的风险。
我强烈建议您不要尝试这样做。
无论如何,您添加以尝试覆盖它的任何ARIA都可能影响非NVDA用户。NVDA会截获箭头键,因此,在NVDA对箭头键做出反应之前,JavaScript无法起作用。
请注意,NVDA用户已经可以使用b和Shift+ 在按钮之间导航b,因此他们无需依赖Tab。
现在,所有这些,您可能会发现一个现有的模式,该模式类似于您在WAI-ARIA创作实践中试图实现的模式。
如果您可以概述自己的目标并举例说明,则有可能我可以确定一些现有的模式或技术,这些模式或技术可以使您实现目标,而又不会冒险遭受破坏。
| 归档时间: |
|
| 查看次数: |
1347 次 |
| 最近记录: |