Javascript keyevent和JAWS屏幕阅读器

时间:2014-04-14 15:40:30

标签: 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!!!");
    }
});

根据我的观察,似乎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()));
    }
});

2 个答案:

答案 0 :(得分:10)

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

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

将所有内容包装在role="application"中,只包含交互区域。

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

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

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

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

答案 1 :(得分: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和箭头键 - 空格应该没问题。

至于可访问性,我们的etire页面被声明为role =“application”,因为整个内容是一个动态生成的页面,它实际上是一个应用程序。只有这样,大白鲨才不会吃掉任何可能的琴键组合。