JavaScript 按键函数和 JAWS

not*_*per 2 javascript jquery accessibility jaws-screen-reader

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

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

问题是,当 JAWS 运行时,击打Enter不会执行任何操作。我必须按Shift+Enter才能滚动到正确的部分并开始阅读。

And*_*ine 6

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

这里有两个解决方案:

  1. 将滚动到元素的击键从Enter更改为Ctrl+Enter(我建议选择另一个键,因为Ctrl+Enter用于在大量即时通讯软件和其他类似软件中发送消息)。
  2. 将 ARIA 角色分配application给页面的一部分。如果 JAWS 遇到该application角色,它将所有键盘命令传递到网页本身。但使用此模式时要格外小心,因为 W3 联盟建议不要过度使用此角色。