无障碍开发系列之事件统一

欢迎访文我的博客YangChen’s Blog

这是开发中踩得一个比较深的坑,好多代码都因为这个回炉了,虽然内容很简单,但有必要单独拎出来说下。

为什么要事件统一

在无障碍开发中一个必不可少的功能就是键盘相应,在传统开发中,只要click事件就行,但是无障碍中必须适配上键盘事件,这是必须的。在这次开发中,为了偷个懒在点击事件和键盘事件上并没有做到一致,因为自认为点击事件不用处理焦点嘛。当然啦,我把代码能写成这样也是自己的问题,把无障碍事件单独抽象了出来这个做法,现在看来略愚蠢。

直截了当的说下为什么要事件统一,因为读屏软件对于无障碍处理的做法不一致。以NVDA为例,这个很典型。有很多网页的事件只有click事件,没有键盘事件,不能指望这些网站再搞个无障碍适配吧。于是NVDA的处理原则就是对于键盘的操作都走click事件,如果你的click事件中没有处理焦点,而键盘事件中处理,那么你就GG了。这就是为什么要统一的原因。

如何统一

如何统一这块挺简单的,举个例子就十分明白了

$('btn').bind('click',function(e){
    'click':function(){
        dealEvent();
    },
    'keydown':function(e){
        //enter || space
        if(e.keyCode == 13 || e.keyCode == 32){
            e.preventDefault();
            $(this).trigger('click');//jQuery
            $(this).fire('click'); //KISSY 
        }   
    }
})

意思很明确啦,就是设置一个处理方法,对于键盘操作都走这个方法。

参考文章

模拟按钮的可访问性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值