我们正在努力修复视频播放器上的一些可访问性问题,其中之一是使用键盘浏览视频的能力。我们有以下代码,它在按键时暂停视频并向前/向后擦洗视频,然后在键上在新点播放视频。
问题是,在带有 JAWS 的 IE11 中,按住键时键下事件不会一直触发。它在键下和键之间来回切换。结果是一个无限循环,向前移动一秒钟,然后回到视频中的原始点并播放。
这是我们目前使用的代码,我们可以做些什么来使其与 JAWS 一起工作?
document.addEventListener("keydown", function(ev) {
if (ev.keyCode === 37 || ev.keyCode === 39) {
console.log("keydown");
}
});
document.addEventListener("keyup", function(ev) {
if (ev.keyCode === 37 || ev.keyCode === 39) {
console.log("keyup");
});
很乐意添加您可能需要的任何其他信息或回答任何问题,请告诉我
您遇到的问题与 JAW 如何拦截按键和使用虚拟光标有关。
当按左和右时,它会尝试说出上一个和下一个字符,因此它会拦截按键,执行操作并将左箭头键传递给浏览器一次,因为它处于"文档浏览模式"。
阻止此行为的一种方法是使用role="application"
,这会发出屏幕阅读器信号,将所有信息正常传递到浏览器。
显然,您需要阅读有关role="application"
的所有文档,因为如果您不小心,您可能会引入可访问性问题而不是修复它们!
相关 W3 指南
W3 角色 - 应用程序信息
当用户导航分配了应用程序角色的元素时,通常截获标准键盘事件的辅助技术应切换到应用程序浏览模式,并将键盘事件传递到 Web 应用程序。目的是提示某些辅助技术从正常浏览模式切换到更适合与 Web 应用程序交互的模式;某些用户代理具有浏览导航模式,其中键(如向上和向下箭头(用于浏览文档,此本机行为可防止 Web 应用程序使用这些键。