Hammer.js触发了多余的pinchin/pinchout事件。

4
在CodePen示例的JS面板中使用以下代码:
var myElement = document.getElementById('myElement');
var mc = new Hammer.Manager(myElement);

var pinch = new Hammer.Pinch({threshold: 0});
mc.add([pinch])
mc.on("pinch pinchin pinchout pinchstart pinchend", function(ev) {
    myElement.textContent += ev.type +" ";
});

在Chrome浏览器中使用触摸屏进行捏合事件的测试时,您会注意到pinchend事件总是后面跟着一个额外的"pinchin"事件。当捏合松开时也是如此。
事件序列如下:
pinchstart pinch pinchin pinch pinchin... ...pinch pinchin pinch pinchend pinchin

这是一个错误还是设计如此?这是否与“幽灵点击”有关?


作为一种解决方法,我已经在Pinch监听器中添加了代码来跟踪最后一个Pinch事件。如果先前的Pinch事件是“pinchend”,那么我会忽略当前的pinchin或pinchout。 - Fabrice
1个回答

0
你应该单独使用“pinch”事件或其他事件(例如pinchin、pinchout等),而不是同时使用它们。

只需删除“pinch”:

mc.on("pinchin pinchout pinchstart pinchend", function(ev) {
    myElement.textContent += ev.type +" ";
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接