在使用交互式DOM元素执行单个页面JavaScript应用程序时我发现“mouseover-mousemove-mousedown-mouseup-click
”顺序发生在之后 “touchstart-touchmove-touchend
”事件序列。使用Javascript防止移动Safari/iPhone中的触摸事件产生鼠标仿真事件(即,单击)
我还发现,有可能防止由touchstart
活动期间做一个“event.preventDefault()
”发生的“mouse*-click
”事件,但只有然后,而不是在touchmove
和touchend
。这是一个奇怪的设计,因为在touchstart
期间不可能知道用户是否意图拖动或轻扫,或者只是点击/点击该项目。
我最终设置了一个与时间戳绑定的“ignore_next_click”标志,但这显然不是很干净。
有没有人知道这样做的更好方法,还是我们错过了什么?
注意的是,虽然“点击”可以被认定为“touchstart-touchend
”序列(即没有“touchmove
”),有一些事情,比如键盘输入焦点,可适当click
事件时才会发生。
我很感兴趣,iPad的Safari浏览器的触摸事件过于一部分,但它不是我清楚你想解决哪些具体问题。如果你仍然在处理这个问题,或者解决了这个问题,那么请细心阐述一下? – Tim 2010-08-01 13:04:10
我希望能够处理某些事件,如拖放,并且还能够处理“点击”事件。我必须将“单击”事件作为适当的“单击”事件(而不是touchstart/touchend)来处理,因为某些事情(例如键盘输入焦点)可能只能在单击事件处理程序中激活。 – 2010-10-01 06:47:14
这个问题非常讨厌,也影响到Android。 – 2011-04-26 18:06:30