2

每次在使用 JAWS 屏幕阅读器时在浏览器上按下空格键时,我都需要捕获当前时间。如果我不使用 JAWS,我可以捕获空格键,但是,一旦 JAWS 打开,系统就无法捕获任何空格键。

这是我的代码:

$(document).keypress(function(event) {
        var chCode = ('charCode' in event) ? event.charCode : event.keyCode;
        if (chCode == 32){ //32 is keyCode for spacebar
    addTime = addTime + Number(new Date()) + ",";
    var x = document.getElementById("spacebar");
    alert("spacebars!!!");
    }
});

我想知道该怎么做,以便每次按下空格键时都能捕捉到当前时间。

有趣的是,每次按下空格键时,JAWS 都会读出“空格”,但该事件并未在代码级别捕获。

或者 - 因为当我按下空格键时 JAWS 会读出“空格”,所以有人知道我如何捕获 JAWS 事件吗?因为当我按下空格键时它会识别它,我想知道我是否可以直接从 JAWS 捕获事件。有什么想法吗?

4

1 回答 1

3

这是因为大多数屏幕阅读器,即 JAWS,在浏览器中提供了所谓的虚拟光标。这是在网页和类似文档上快速导航所必需的。
要对此进行测试,请尝试在 JAWS 开启时按下网页上的字母。例如,如果您按b,JAWS 会说“没有按钮”,因为b会移动到下一个按钮(如果有的话)。要输入文本,您需要进入表单模式。
另一方面,空格键仅在您位于可点击元素(链接、按钮、复选框或仅带有onClick事件的元素)上时才起作用,然后它会激活该元素;或在表单模式下,然后将空格键入编辑字段。
为了完成您想做的事情,您需要将网页的一部分声明为role="application"(更多关于这里):

当用户浏览分配了应用程序角色的元素时,通常拦截标准键盘事件的辅助技术应该切换到应用程序浏览模式,并将键盘事件传递给 Web 应用程序。
目的是提示某些辅助技术从正常浏览模式切换到更适合与 Web 应用程序交互的模式;一些用户代理具有浏览导航模式,其中使用向上和向下箭头等键来浏览文档,并且这种本机行为会阻止 Web 应用程序使用这些键。

因此,为了能够计算您的时间,只需将父级声明divrole="application",您的空格键将直接传递给应用程序,而不会被 JAWS 拦截。

于 2014-04-14T19:41:53.213 回答