问题
在tab页的a标签中,有些平板或者电脑设备可以支持触屏加鼠标的方式点击,但是会造成鼠标点击无法响应的问题。
原因
原因是事件触发的时间间隔问题,用鼠标点击时会有300ms的延迟,无法触发tap事件
解决方案
本来想通过jq的 trigger(‘tap’) 的方式触发点击,但是这似乎只能触发绑定在元素的tap监听,所以要使用原生的事件触发
第一种
$('a.mui-control-item').on('click', function() {
var event = document.createEvent('Events');
event.initEvent('tap', true);
this.dispatchEvent(event);
});
不过这个方法已经在web标准中移除,不过还是有些浏览器支持的
第二种(推荐)
$('a.mui-control-item').on('click', function() {
var event = new Event('tap',{'bubbles':true});
this.dispatchEvent(event);
});
//原生
var item= document.querySelectorAll('a.mui-control-item');
for (var i = 0; i < item.length; i++) {
item[i].addEventListener("click" , function(){
this.dispatchEvent(new Event('tap',{'bubbles':true}));
} ,false);
}
这里要注意bubbles要设置为true和上面的方法中initEvent的第二个属性相对应的,为事件冒泡。
``
测试
首先浏览器开启手机调试模式,在点击切换tab页中,鼠标点击时延缓弹起鼠标的间隔,如果不加入上述代码,是无法切换页面的,加入之后即可切换页面,解决了这个问题。