识别触摸动作导致的上下文事件?

时间:2017-11-09 13:06:16

标签: javascript html touch contextmenu dom-events

我有一个应用程序,可以拖放SVG元素内部的元素(感谢d3-dragd3-zoom,请参阅https://bl.ocks.org/mbostock/3127661b6f13f9316be745e77fdfb084作为此类页面的示例)也可以用在支持触控的设备上,但是经过长时间按下后会弹出一个上下文菜单(至少在IE11,Edge和Firefox中)并且挡住了,因此我想阻止上下文菜单显示在这种情况。

我可以通过处理contextmenu事件并对事件对象执行.preventDefault()来禁止显示上下文菜单,但我想知道是否存在上下文菜单被阻止显示的解决方案触摸案例,它仍然会出现在例如右键单击或在元素具有焦点时按下menu key

我首先想到的是,我可以查看事件对象的.button.buttons属性,但看起来这些值是任意02,它看起来像就像在不同系统上的各种浏览器中进行测试时可以在任何组合中找到它一样。

该元素已有touch-action: none

是否有一些工作方法可以让上下文菜单显示长按不触摸的结果?

It looks like .preventDefault() on the relevant touch events wouldn't be an option.

1 个答案:

答案 0 :(得分:1)

jQuery UI Touch Punch解决了这一切。

这是jQuery UI的触摸事件支持。基本上,它只是将触摸事件连接回jQuery UI。在iPad,iPhone,Android和其他支持触控的移动设备上进行测试。我使用jQuery UI进行排序,它就像一个魅力。

http://touchpunch.furf.com/