Javascript keyevent和JAWS屏幕阅读器

bdf*_*ios 3 javascript accessibility keyevent jaws-screen-reader

我有一个应用程序,每次按下空格键时都会执行某些操作(例如警报).如果我不使用JAWS屏幕阅读器,这可以正常工作.但是,一旦我加载JAWS屏幕阅读器,当我按空格键时它不会执行警报.我需要使用JAWS,所以我需要这个工作.这是代码片段.

$(document).keypress(function(event) {
    var chCode = ('charCode' in event) ? event.charCode : event.keyCode;
    if (chCode == 32){ //32 is keyCode for spacebar
      alert("spacebars!!!");
    }
});
Run Code Online (Sandbox Code Playgroud)

根据我的观察,似乎JAWS抓住键盘焦点并且不允许空格键事件触发.当我按下空格键时JAWS总是读取"Space"但警报事件不会触发.当空格键按下时,如何仍然可以触发警报或doSomething()?如何从JAWS获取控制权或者可以与JAWS共享键盘控制,这样即使JAWS读出我按下的角色(在本例中为Spacebar),它也会允许我的事件(警报)触发.谢谢.

更多代码:

$(document).keypress(function(event) {
  var cc= ('charCode' in event) ? event.charCode : event.keyCode;       
       if (cc == 32)
    {
      spArray.push(Number(new Date()));
    }
});
Run Code Online (Sandbox Code Playgroud)

Ala*_*irC 10

一般来说,即使他们允许你也不建议覆盖屏幕阅读器.有很多JAW键盘命令(与INS一起使用)使用空格键,你可能会锁定这些命令.

如果该区域主要是表单控件或交互式小部件,那么您可以将其包装在一个元素中role="application".这使得(窗口)屏幕阅读器进入"表单"模式,其中键被传递到网页.

不要包一切button,就在互动区.

更新:有了更多信息,这是关于基于音频的捕获,其中用户触发音频文件,然后再次触发某事来设置时间并通过捕获.

使用原生onclick,Jaws将通过使用enter(不确定空间,这不是通常的'激活'键).我建议检查输入密钥(我认为是charcode 13),甚至onclick应该工作.在原生按钮/链接上,它适用于屏幕阅读器.

$(document).click(function() {
   spArray.push(Number(new Date()));
});
Run Code Online (Sandbox Code Playgroud)

假设它位于正确的位置,以便在需要之前不会变为活动状态.(JS不是我的强项,但请使用回车键或role="application".