为什么 Javascript IF keyCode === Enter 键或空格键不适用于 NVDA 屏幕阅读器?

all*_*ski 7 javascript keyboard accessibility screen-readers nvda

我正在研究客户网站的可访问性,并使用 JQuery/Javascript 来检测是否按下了 Enter 或空格键键盘按键,这非常有效...

$(document).addEventListener('keydown', navKeyboardHandler);

navKeyboardHandler = function(e) {
    console.log('a keyboar key was pressed'); // This does work

    if (e.keyCode === 13 || e.keyCode === 32) { // Keyboard Enter OR Spacebar pressed
        console.log('enter or spacebar key pressed ! ! !'); // This does NOT work
    }
};
Run Code Online (Sandbox Code Playgroud)

...直到我打开 NVDA 用屏幕阅读器测试键盘导航!它完全忽略了这个声明。偶尔,这会触发。就像按 10 或 20 次键盘中的一次一样。关于何时选择触发并不一致。

需要修改 IF 语句中的哪些内容才能使其正常工作?任何帮助将不胜感激。我正在 Windows 上使用 Chrome 和 Firefox 对此进行测试。

all*_*ski 4

我通过他们的 Slack 频道联系了无障碍社区的人们:web-a11y.slack.com

有人提供了一个不错的 解决方案

它可能不会触发,因为如果您处于浏览模式,NVDA 会拦截按键,这是正常现象。如果您要手动切换到焦点模式(插入+空格 - 您会听到“打字机”声音),代码应该会通过。