2014-04-14 126 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」,因爲整個內容是一個動態生成的頁面,它實際上是一個應用程序,只有這個方式大白鯊沒有吃任何可能的按鍵組合。