我目前正在为多个浏览器构建一个支持触摸的滑块小部件。所以,我有 touchstart、touchend、touchmove、mousedown、mousemove 和 mousedown 的监听器。除了在 Mobile Safari 上,它工作得很好。
如果我长按我的目标,则会触发一个 mousemove 事件,其中前一次触摸的坐标会导致抖动。
如何防止或过滤掉此 mousemove 事件而不导致桌面交互问题?
我目前正在为多个浏览器构建一个支持触摸的滑块小部件。所以,我有 touchstart、touchend、touchmove、mousedown、mousemove 和 mousedown 的监听器。除了在 Mobile Safari 上,它工作得很好。
如果我长按我的目标,则会触发一个 mousemove 事件,其中前一次触摸的坐标会导致抖动。
如何防止或过滤掉此 mousemove 事件而不导致桌面交互问题?
移动 Safari 中长按的事件顺序是 touchstart、mousemove、touchend。这不同于有效的鼠标移动(mousedown、mousemove、mouseup)和有效的触摸(touchstart、touchmove、touchend)。如果您为所有有效事件调用 prevent default,您将不会收到额外的通知。因此,如果您跟踪滑块随着鼠标移动而独立于响应触摸的移动,则鼠标移动发生在正常序列之外,可以安全地忽略。
你考虑过使用 Swipe JS 吗?http://swipejs.com/