Javascript keyevent和JAWS屏幕阅读器

Javascript keyevent和JAWS屏幕阅读器,javascript,accessibility,keyevent,jaws-screen-reader,Javascript,Accessibility,Keyevent,Jaws Screen Reader,我有一个应用程序,每次按下空格键时都会执行某些操作(如警告)。如果我不使用JAWS屏幕阅读器,这工作正常。然而,一旦我加载JAWS屏幕阅读器,当我按下空格键时,它不会执行警报。我需要用下巴,所以我需要这个来工作。下面是代码片段 $(document).keypress(function(event) { var chCode = ('charCode' in event) ? event.charCode : event.keyCode; if (chCode == 32){ /

我有一个应用程序,每次按下空格键时都会执行某些操作(如警告)。如果我不使用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!!!");
    }
});
据我观察,JAWS似乎抓住了键盘的焦点,不允许空格键事件触发。当我按下空格键时,JAWS总是显示“空格”,但警报事件不会触发。当按下空格键时,我如何仍能让警报或doSomething()触发?我如何从JAWS获得控制,或者可能与JAWS共享键盘控制,这样即使JAWS读取我按下的字符(在本例中为空格键),它也将允许触发我的事件(警报)。谢谢

更多代码:

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

一般来说,不建议过度使用屏幕阅读器,即使他们允许您这样做。有相当多(与INS一起)使用空格键,您可能会将这些命令锁定

如果该区域主要由控件或交互式小部件组成,那么您可以将其包装在一个元素中。这使(windows)屏幕阅读器进入“窗体”模式,其中键被传递到网页

不要将所有内容都包装在
role=“application”
中,只包装在交互区域中

更新:更多信息,这是关于基于音频的捕获,用户触发音频文件,然后再次触发某个内容以设置时间并通过捕获

使用本机的
按钮
,Jaws将通过使用enter键(不确定空格,这不是通常的“激活”键)。我建议要么检查enter键(我认为是charcode 13),要么甚至单击
onclick
都可以。在本机按钮/链接上,它可以跨屏幕阅读器工作

$(document).click(function() {
   spArray.push(Number(new Date()));
});

假设它位于正确的位置,直到需要时才激活。(JS不是我的强项,但使用enter键或单击
onclick

在我们的应用程序中,这样声明的事件处理程序是有效的:

doKeyDown_: function (evt) {
    var key = evt.keyCode || evt.which;
    //arrows
    if (key == 27 || (key >= 37 && key <= 40)) {
        try {
            if (key >= 37 && key <= 40) {
                this.handleArrwos(evt);
            } else {
                this.handleEsc(evt);
            }
        ...
doKeyDown\函数(evt){
var key=evt.keyCode | | evt.which;
//箭

如果(key==27 | |(key>=37&&key=37&&key)感谢您的反馈。根据上下文,我正在处理音频验证码。验证码控制(播放和重新加载按钮)在表单页面上。用户通过按空格键回答验证码来回答测试。每次按下空格键时,我都需要捕获当前时间,但JAWS不允许捕获空格键,但它将读取“空格”每次按下空格键时。我需要一种捕获空格键的方法,就像不使用JAWS时一样。我将尝试您提到的应用程序角色,看看它是否有用。谢谢。您是否尝试过使用按钮并接受onkeypress甚至onclick?使用标准控件意味着JAWS将通过按enter键并触发onclick/onkeypress。是的,我这样做了。它是这样实现的:单击播放按钮,开始听按键。请参阅上面添加的代码。我还尝试放置role=“application”在body标签和child标签上显示不同的时间,但都不起作用。感谢您提供更多的解释。我曾尝试按其他键而不是空格键,并注意到它不会接受很多字符,但它确实接受一些字符,例如[,]和“一次一个字符(如右方括号“]”)按下时,它将启动空格键上的acceptn。由于此行为,我以编程方式按下“]”按一下键中的播放按钮,触发接受空格键,就像我手动这么做时发生的一样,但不,它不起作用。我一直在尝试其他技术,我感谢你的有用意见。我希望这能得到解决。