0

使用 Enter 键确保所有元素都可点击,我使用以下方法:

document.addEventListener('keydown', function(e){
    if( e.keyCode === 13 ) {
        e.target.click();
    }
});

对于大多数点击来说,它的效果非常好。问题在于没有直接绑定点击事件但可以通过冒泡点击的元素。例如:

    jQuery(document).on('click', function(e){
        jQuery(e.target).addClass('active');
    });

以这种方式绑定的可点击元素将不会使用第一个示例触发。我发现 NVDA 以某种方式使所有元素都可以使用键盘点击,无论使用何种方法绑定它们。如果打开 NVDA,将触发像示例 2 中那样绑定的元素。

我想了解 NVDA 是如何做到这一点的(或者如果你有其他想法来解决这个问题),以便我可以将该行为复制到我的应用程序中,该应用程序正在被有运动障碍的人使用并且必须单独使用键盘,没有屏幕读者。

解决方案必须是纯 JS 或 jQuery。

4

1 回答 1

0

您有兴趣使您的网站易于访问,这真是太好了,非常感谢。
但是请不要做这样的事情,它们会产生不可预测的屏幕阅读器行为,并且经常扰乱可访问性树本身。与其让所有
元素都可点击, 不如想想你需要达到什么结果。如果您希望您的链接和按钮可以与屏幕阅读器一起使用,您无需做任何事情,它已经在 HTML 中实现了 - 繁荣,没有 Javascript,没有 jQuery,纯 HTML。 如果出于某种原因您希望您的 s 像按钮和s 像链接一样,只需使用 ARIA 角色:
divspan

<div id="myDiv" role="button">Click me!</div>
I'm a link to <span id="linkToGoogle" role="link">Google</span>, isn't that nice?

再次 - 繁荣,没有 Javascript,没有 jQuery,纯 HTML。
但是,如果可以并且可以的话,只使用语义 HTML 元素,而不是 ARIA 角色:<button>用于按钮、<a href...>用于链接等。如果我知道你具体想让什么可点击,我可以详细说明。

于 2018-11-23T22:08:27.657 回答