Hammer.js pan事件仅适用于触摸设备,而不适用于台式计算机Click + Drag

时间:2014-10-11 22:38:02

标签: javascript ios mobile hammer.js

我将这个标准代码用于Hammer.js的Pan / Pinch (1)

var mc = new Hammer(document.body);

mc.add(new Hammer.Pinch({ threshold: 0 })).recognizeWith(mc.get('pan'));

// let the pan gesture support all directions. this will block the vertical scrolling on a touch-device while on the element
mc.get('pan').set({ direction: Hammer.DIRECTION_ALL });
mc.on("panleft panright panup pandown tap press pinchstart pinchmove", function(ev) {
    $('#myElement').text(ev.type +" gesture detected. ev.scale=" + ev.scale + "  ev.deltaX,Y=" + ev.deltaX +'  ' + ev.deltaY);
});

如何仅针对触摸设备而不是台式计算机Click+Drag获取hammer.js平移事件(因为我已经使用了桌面代码电脑点击+拖动,我不想重写它!)

注意(1)顺便说一下,这段代码好吗?为什么真正需要recognizeWith

2 个答案:

答案 0 :(得分:8)

您可以通过设置 inputClass 选项强制Hammer.js使用您想要的输入类:

var hammer = Hammer(element, {
  inputClass: Hammer.TouchInput
})

您可能还希望在可用时支持指针事件:

var hammer = Hammer(element, {
  inputClass: Hammer.SUPPORT_POINTER_EVENTS ? Hammer.PointerEventInput : Hammer.TouchInput
})

Hammer.js内置了以下inputClasses:

  • PointerEventInput
  • TOUCHINPUT
  • MouseInput
  • TouchMouseInput

答案 1 :(得分:4)

您可以查看' pointerType'事件(ev)对象中的属性值。 它应该是"鼠标"用于桌面。