我有一个应用程序,每次按下空格键时都会执行某些操作(例如警报)。如果我不使用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()));
}
});
答案 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”,因为整个内容是一个动态生成的页面,它实际上是一个应用程序。只有这样,大白鲨才不会吃掉任何可能的琴键组合。