Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 键盘可访问性和辅助技术_Javascript_Jquery_Accessibility_Assistive Technology_Nvda - Fatal编程技术网

Javascript 键盘可访问性和辅助技术

Javascript 键盘可访问性和辅助技术,javascript,jquery,accessibility,assistive-technology,nvda,Javascript,Jquery,Accessibility,Assistive Technology,Nvda,我正在尝试实现一个键盘辅助脚本和一个辅助技术(NVDA) 我的脚本捕获箭头键按下。 代码段: $(document).keydown(function(event){ var key = event.keyCode || event.which; if(key == 40) //capture arrow key down { //do something evil } } 问题是,辅助技术有自己的键盘绑定 有可能使它们同时工作吗?您有

我正在尝试实现一个键盘辅助脚本和一个辅助技术(NVDA)

我的脚本捕获箭头键按下。 代码段:

$(document).keydown(function(event){    
    var key = event.keyCode || event.which;
    if(key == 40) //capture arrow key down
    {
         //do something evil
    }
}
问题是,辅助技术有自己的键盘绑定

有可能使它们同时工作吗?

您有一个错误

$(document).on('keydown', function() {
    var key = event.keyCode || event.charCode;
    console.log("key " + key);
});     
注意打开的按钮

$(文档)。打开('keydown',函数()


这将允许您在控制台中查看按键点击,然后您可以制作自己的按键映射。

NVDA在两种模式下工作:聚焦浏览。可以使用NVDA键切换模式(如果您已设置了/Insert/Numpad Insert,请使用CapsLock)

在对焦模式下,控件的对焦方式与无NVDA时的对焦方式相同。与箭头键不会有任何冲突

在浏览模式下,NVDA使用

  • 上下箭头键,从一个输入控件/组件导航到一组内容(如表中的单元格),然后
  • 按左右箭头键按字符读取内容
在那里,我也没有注意到它会干扰您想要实现的键


例如,您可以测试
https://www.w3.org/TR/wai-aria-practices/examples/listbox/listbox-scrollable.html
两种模式都使用NVDA。

不幸的是,我们无法确定按下了什么键码,因为没有捕获任何事件。辅助技术的键盘绑定阻止触发按键事件很好的屏幕阅读器事件处理程序列表-抱歉,我被更正了。会触发
.keydown
,但不会捕获箭头键down的keyCode。似乎AT只使用箭头键。我将此作为评论发布,因为我自己还没有测试过。但尝试捕获标记为
role=“application”
的区域内的箭头键。我想,在这种情况下,AT应该将所有密钥传递给应用程序本身。@MenelionElensúlë-你的评论对我有用。我使用了
role=“menuitem”
,因为我正在导航的项目是menuitems。看起来,这不是一个错误,只是一个旧的jQuery符号。您可以编写类似于
$(“a”)。单击(function(){…})更早。但是现在是的,
on()
被推荐用于所有事件。它是由人类编写的代码,我们都以不同的风格编写。