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

在touchStart,touchMove,touchEnd和touchCancel的事件处理程序方法中,我调用event.preventDefault来阻止移动浏览器触发触摸和鼠标事件 .

这适用于mouseDown和mouseUp,当我触摸屏幕时不会被触发,但由于某种原因,在每次触摸触发后短时间内(几百帧),android浏览器仍会触发mouseMove事件(在第一次触摸开始时) ,这个mouseMove前面有一个mouseOver) . 如果我足够快地触摸,mouseMove会在touchEnd之后被触发(相对于touchStart具有相同的延迟) .

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

  • 是否有其他触摸事件我没有捕获导致mouseMove事件?

  • 为什么mouseMove相对于触摸开始延迟了一点?

  • 为什么不是由任何其他触摸事件(touchMove,touchEnd)生成的mouseMove?

  • 其他任何浏览器都有可能从触摸中生成鼠标事件的怪癖吗?

  • 是否有不同的跨平台方法来防止触摸导致鼠标事件?也许有些CSS?