目标元素边缘的Touchstart导致mousedown

时间:2016-03-15 20:31:00

标签: javascript html javascript-events touch

我注意到一种非常奇怪的行为,也许是一个错误。我有一个带锚和分隔符的垂直菜单。锚有mousedown,touchstart,pointerdown的自定义事件处理程序。问题是,当我点击并且手指覆盖锚点和分隔符时(分隔符被覆盖更多),然后执行mousedown事件而不是touchstart。我设法用一个简单的样本重现它。 我在android chrome和桌面上使用chrome dev工具触摸仿真测试了它。只需触摸锚点和分隔符之间的区域,您就会看到浏览器注册了mousedown事件而不是touchstart事件。有人能告诉我什么是错的吗?这是一个错误还是我做错了什么? 这只发生在锚点上,如果有段落而不是锚点,那就不会发生。

以下是示例: http://jsbin.com/huhariluva/edit?js,console,output

2 个答案:

答案 0 :(得分:0)

Edge不支持触摸事件。因此touchstart什么都不做,并且从不调用preventDefault,因此执行mousedown。您可以使用指针事件,并使用PEP对chrome和其他浏览器进行polyfill。

指针事件:https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent

PEP:https://github.com/jquery/PEP

答案 1 :(得分:0)

我设法克服了这个问题。解决方案是将touchstart事件侦听器添加到单击的其他元素并导致该bug并从那里调用event.preventDefault()。

我还提交了有关铬虫追踪器的错误。