防止触摸在Android浏览器中生成mouseOver和mouseMove事件

Mar*_* A. 5 javascript mouseover touch mousemove preventdefault

我正在建立一个需要在PC,Mac和移动浏览器上进行触摸和鼠标交互的页面。

在用于touchStart,touchMove,touchEnd和touchCancel的事件处理程序方法中,我正在调用event.preventDefault以防止移动浏览器同时触发触摸和鼠标事件。

这对于mouseDown和mouseUp效果很好,当我触摸屏幕时它们不会被触发,但是由于某种原因,每次touchStart被触发后一小会儿(夫妇100ms),Android浏览器仍然会触发mouseMove事件(在第一个touchStart上) ,此mouseMove之前带有mouseOver)。如果我足够快地触摸,那么touchEnd之后会触发mouseMove(相对于touchStart而言具有相同的延迟)。

我真的很想防止触摸产生任何鼠标事件,并且我也想详细了解这里发生的事情,所以我有以下问题:

  • 我是否还有其他未捕获的触摸事件导致mouseMove事件?
  • 为什么mouseMove相对于触摸开始有点延迟?
  • 为什么其他任何触摸事件(touchMove,touchEnd)都不生成mouseMove?
  • 其他浏览器是否有可能会因触摸而产生鼠标事件的怪癖?
  • 是否有不同的跨平台方法来防止触摸导致鼠标事件?也许一些CSS?