JavaScript按键功能和JAWS

JavaScript按键功能和JAWS,javascript,jquery,accessibility,jaws-screen-reader,Javascript,Jquery,Accessibility,Jaws Screen Reader,我有一个客户需要符合ADA。我们在使用IE9和JAWS屏幕阅读器时发现了一个问题。我们有一个jQuery函数,当用户按下按钮并点击Enter时,它可以滚动到页面上的另一个元素。以下是函数: jQuery('#ball_i5nqtjcVVB0CxYBJICklS6w').keypress(function(event) { if (event.keyCode == 13) { jQuery("#headofcurve").focus(); scrollTo(

我有一个客户需要符合ADA。我们在使用IE9和JAWS屏幕阅读器时发现了一个问题。我们有一个jQuery函数,当用户按下按钮并点击Enter时,它可以滚动到页面上的另一个元素。以下是函数:

jQuery('#ball_i5nqtjcVVB0CxYBJICklS6w').keypress(function(event) {
    if (event.keyCode == 13) {
        jQuery("#headofcurve").focus();
        scrollTo("form");
        liveballTag('Learn More');
    }
});

问题是,当JAWS运行时,按Enter键没有任何作用。我必须按下Shift+Enter键,它才能滚动到正确的部分并开始阅读。

这是正常行为。这是因为JAWS(以及大多数其他moder屏幕阅读器,顺便说一句)处理网页和其他类似HTML的内容的方式。
当用户打开网页时,他/她会用所谓的虚拟光标观察它。这意味着所有键盘命令都会改变它们在网页上的含义。这样做是为了快速导航。例如,如果按h键,则移动到下一个标题;如果按b键,则移动到“下一步”按钮,依此类推。
为了输入内容,您应该处于表单模式。要进入表单模式,应在表单元素(如编辑字段或组合框)上按enter键。
这就是说,您不能期望Enter会像您习惯的那样在不运行JAWS的情况下进行处理

这里有两种解决方案:

  • 更改击键以将元素从Enter滚动到,比如说,Ctrl+Enter(我建议选择另一个,因为Ctrl+Enter用于在大量的Messenger和其他类似软件中发送消息)
  • 应用程序
    ARIA角色分配给页面的一部分。如果JAWS遇到
    应用程序
    角色,它会将所有键盘命令传递到网页本身。但是要非常小心使用这种模式,因为W3联盟建议不要过度使用这个角色

  • 您使用制表符并按enter键的是哪个元素?它是链接还是窗体控件?如果不是,如果没有相当多的额外标记/script.AlastairC,它可能无法按预期工作。它是一个链接。单击或按下ENTER键时,该按钮应将页面向下滚动至视频部分或窗体,具体取决于您选择的按钮。jQuery用于scrollTo功能。伙计,你是最棒的!我发现的另一个问题是,如果您不正确地使用角色,JAWS将以您意想不到的方式运行。始终仔细检查您的角色和子角色(在我的案例中,是role=“menu”vs role=“listbox”)