javascript – 如何防止移动浏览器中的模拟鼠标事件?

前端之家收集整理的这篇文章主要介绍了javascript – 如何防止移动浏览器中的模拟鼠标事件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
移动浏览器模拟鼠标事件,以支持只附加处理程序到鼠标事件的网站.但是,如果要实现两个交互模型 – 一个用于鼠标事件,另一个用于触摸事件,那么有助于防止浏览器模拟鼠标事件.

在iOS Safari上,这相当简单 – 只需在touchend上运行preventDefault:

jQuery(document).on('touchend',function(e) {
  // Do some logic      
  e.preventDefault();
});

这是非常理智的不幸的是,Android的默认浏览器和Dolfin都不会使用这种技术取消鼠标模拟. (Dolfin将在touchDefault在touchstart上运行时取消mousedown,但这不是非常有用的,因为您不知道手指在touchstart上会采取什么动作.)

有没有其他方式有条件地,甚至没有条件地阻止模拟的鼠标事件触发?

[编辑]

为了更好地了解问题,我已经开始了一个触摸事件兼容性表:http://labs.cruncher.ch/touch-events-compatibility-table/

解决方法

虽然有一些狡猾的方法可以实现这一点,但是我有两种常见的做法来解决这个差异:

1)使用标志

在事件处理程序中设置布尔标志,如mouseIsDown或mouseIsMoving,可以设置并检查鼠标和触摸事件.如果用户单击鼠标,请接受该鼠标作为鼠标事件.然后,如果触摸事件随之发生,请忽略它.

2)仅实施必要的

嗯,这是好的做法.如果您不需要,请勿打扰添加touchmove和mousemove活动.它只会使维护代码变得更加困难.编辑:可能应该更具体:如果您需要更多高级事件跟踪,请考虑重新思考您的UI.

最后,不要依赖外部硬件配置列表,因为这些列表很少“完全”准确.

猜你在找的JavaScript相关文章