Android 4.x 浏览器不触发 ontouchend 的bug解决

之前在做一个侧滑效果的时候,发现在android4+的机型上touchend事件没有被触发(移动浏览器上的bug)

怎么破?在 touchmove 事件中 e.preventDetault() 居然就可以。

 

但是简单调用 e.preventDetault() 会导致另外一个问题,就是阻止了屏幕上下滚动的 scorll 事件。

 

这又怎么破?

最后,我在一位兄台的博客里找到思路《手机浏览器常用手势动作监听封装》,具体思路就是“兼容的解决办法是在 touchmove 时判断手势趋势大于预设值时(大于预设值证明有 move的动作趋势),停止默认的操作e.preventDefault()”。于是我的代码就是这样。

/** 
 * touchend事件丢失 
 */  
function fixTouchEndNotFire(e, a1, a2, a3, disX){  
    if(window.navigator.isAndroid_4){  
        if ( disX > 7 ) {  
            e.preventDefault();  
        }  
    }     
}  

 

加入到 touchmove 事件中。

 

你可能感兴趣的:(Android 4.x 浏览器不触发 ontouchend 的bug解决)