4

我有一个应用程序,每次按下空格键时都会做一些事情(例如警报)。如果我不使用 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 总是读取“空格”,但不会触发警报事件。当按下空格键时,我怎样才能让警报或 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()));
    }
});
4

2 回答 2

12

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

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

不要所有内容都包含在 中role="application",仅包含交互区域。

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

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

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

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

于 2014-04-14T21:51:30.877 回答
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",因为整个内容是一个动态生成的页面,它实际上是一个应用程序。只有这样,Jaws 才不会吃掉任何可能的按键组合。

于 2015-05-18T06:10:23.293 回答