JavaScript 按键功能和 JAWS

标签 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');
    }
});

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

最佳答案

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

这里有两个解决方案:

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

关于JavaScript 按键功能和 JAWS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26638980/

相关文章:

objective-c - 访问屏幕上所有应用程序窗口的 NSWindow.level

javascript - 如何限制在我的网站上完成考试的持续时间

javascript - 如何选择与过滤器匹配的连续元素

javascript - 如何让 JS 函数产生的字符串出现在 div 中?

javascript - 为什么我的数据没有显示在文本框中?

JQuery CSS/Animate 函数在左侧绝对定位时失败

javascript - 如果循环定义中没有使用 i 变量,为什么它会包含在循环定义中?

jQuery 对话框标题栏宽度问题

android - 启用触摸浏览后,如何保持单指针手势?

accessibility - UIPageViewController 可访问性或画外音