我正在尝试使我的某些库与触摸设备一起使用,但是很难弄清楚它们如何得到支持以及它们如何工作。
基本上有5个touch事件,但似乎移动浏览器之间仅在touchstart
事件(duh)上存在共识。我创建了一个小提琴作为测试用例。
我已经在装有Android 4的Galaxy Note上进行了测试,但是您也可以使用桌面浏览器检查链接。
目的是试图弄清楚如何处理龙头,双击和长龙头。没有什么花哨。
基本上就是这样:
在Android的股票浏览器不火的触摸事件。它只是试图模仿鼠标点击,水龙头,射击mousedown
,mouseup
和click
事件连续,但双水龙头只是在进出塔页面缩放。
当手指触摸屏幕时,Chrome浏览器Android版会触发touchstart事件。如果它的发布很快,它触发那么mousedown
,mouseup
,touchend
最后click
事件。
在长按的情况下,大约半秒钟后会发出声音,mousedown
并且mouseup
,并且touchend
在手指松开时click
结束。
如果您移动手指,它会触发一个touchmove
事件两次,然后触发一个touchcancel
事件,此后什么也不会发生,即使touchend
抬起手指也不会发生任何事件。
一双击触发器/缩小变焦功能,但事件明智它触发组合touchstart
-touchevent
两次,没有鼠标事件被解雇。
火狐为Android正确触发该touchstart
事件,并在短击火灾的情况下mousedown
,mouseup
,touchend
和click
之后。
在的情况下,长按,它触发mousedown
,mouseup
最后touchend
事件。这些方面与Chrome相同。
但是,如果你移动你的手指,如果火灾touchmove
汽车无(作为一个可以预期),但它不不火的touchleave
事件当手指离开与事件侦听器的元素,并且不火的touchcancel
当手指得到浏览器窗口的出事件。
对于双击,它的行为就像Chrome。
Opera Mobile只需短按一下即可完成Chrome和Firefox的功能,但是如果长按,则会激活某种我确实要禁用的共享功能。如果您动手指或双击,它的行为就像Firefox。
Chrome beta版通常会在短按时执行操作,但在长按时不会再触发该mouseup
事件,只是touchstart
,然后mousedown
在半秒钟后,再touchend
在手指松开时触发。手指移动后,现在的行为就像Firefox和Opera Mobile。
如果双击,则在放大时不触发触摸事件,而仅在放大时触发。
Chrome测试版显示的是最奇怪的行为,但是我真的不能抱怨,因为它是测试版。
问题是:在最常见的触摸设备浏览器中,是否有一种简单的方法来尝试检测短按,长按和双击?
太糟糕了,我无法在具有Safari或Windows Phone 7 / Phone 8 / RT的IE的iOS设备上对其进行测试,但是如果您可以的话,我们将非常感谢您的反馈。