2014-04-14 90 views
2

我有一个应用程序在每次按空格键时都会执行某些操作(例如,提醒)。如果我不使用JAWS屏幕阅读器,这工作正常。但是,一旦我加载JAWS屏幕阅读器,当按下空格键时它不会执行警报。我需要使用JAWS,所以我需要这个工作。这是代码片段。Javascript keyevent和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总是读取“空格”,但警报事件不会触发。当空格键被按下时,我还能如何触发alert或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())); 
    } 
}); 

回答

8

一般来说,不建议为忽略屏幕阅读器,即使他们放了你。有很多使用空格键的JAWs keyboard commands(与INS结合使用),你可能会将这些命令锁定。

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

不是包裹一切在role="application",只是互动区域。

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

使用本地button,Jaws将通过使用回车(不确定空间,这不是通常的'激活'键)。我建议检查输入密钥(charcode 13我认为),或者甚至onclick应该工作。在原生按钮/链接上,它可以跨屏幕阅读器使用。

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

假设位于正确的位置,以便它在需要之前不会变为活动状态。 (JS是不是我的强项,但与回车键或onclick

+0

感谢您的反馈。根据上下文,我正在开发音频验证码。验证码控件(播放和重新加载按钮)位于表单页面上。用户通过按空格键回答验证码来回答验证码。每次按空格键时我需要捕获当前时间,但JAWS不允许捕获空格键,但每次按空格键时它都会读出“空格”。我需要一种方式来捕获空格键,就像它在不使用JAWS时的工作方式一样。我会尝试你提到的应用程序角色,看看它是否有帮助。谢谢。 – bdfios

+0

您是否尝试过使用按钮并接受onkeypress甚至onclick?使用标准控制意味着大白鲨可以通过按下Enter键并触发一次onclick/onkeypress。 – AlastairC

+0

是的,我做到了。它是这样实现的:点击播放按钮,开始听按键。请参阅上面的代码。 – bdfios

1

的事件处理程序声明如下作品在我们的应用程序:

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); 
      } 
     ... 

虽然它是基于ZK平台,内部引擎仍然是JQuery,请注意事件是keyDown(而不是keyPress)以及按键的检测方式,例如Esc和方向键 - 空间应该没有问题

至于可访问性,我们的淘汰赛页面声明为role =“application”,因为整个内容是一个动态生成的页面,它实际上是一个应用程序,只有这个方式大白鲨没有吃任何可能的按键组合。