Javascript keyevent和JAWS屏幕阅读器

Javascript keyevent and JAWS screen reader

本文关键字:屏幕 JAWS keyevent Javascript      更新时间:2023-09-26

我有一个应用程序,每次按下空格键时都会执行某些操作(例如警报)。如果我没有使用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读取我按下的字符(在本例中为空格键),它也会允许我的事件(警报)触发。谢谢

更多代码:

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

通常,不建议过度使用屏幕阅读器,即使他们允许您这样做。有相当多的JAW键盘命令(与INS结合使用)使用空格键,您可能会将这些命令锁定。

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

不要将所有内容都封装在role="application"中,只封装在交互区域中。

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

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

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

假设它在正确的位置,这样它在需要之前不会变得活跃。(JS不是我的强项,但使用回车键或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);
            }
        ...

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

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