js mousedown with touch

时间:2016-09-12 16:42:29

标签: javascript touch right-click

有没有办法检测是否有一个' mousedown'是右键单击(手指握住约1秒)或只是正常的右键单击?

我认为chrome可以用" ev.originalEvent.sourceCapabilities.firesTouchEvents"来做到这一点。但只有铬。

switch

编辑: 当前情况:在我按下鼠标左键大约一秒钟后,浏览器会自动触发一个“mousedown”'按钮= 2的事件(在设备工具栏中测试'模式为chrome)。我想取消这个。

如果在touchstart和touchend之间出现右侧mousedown,则右键单击触摸屏。

它的工作方式是这样的。

$('#container').mousedown(function(ev) {
    if (ev.button === 2 && ev.comesFromTouch) return false
    //...
}

1 个答案:

答案 0 :(得分:0)

我认为您可以使用setTimeout / clearTimeout来计算1秒。伪代码:

var global_timer = null;
$('#container').mousedown(function(ev) {
  if (ev.button === 2) {
    global_timer = setTimeout(fireTouchRightClick, 1000);
  }
});
$('#container').mousemove(function(ev) {
  cancelTouchRightClick();
});
$('#container').mouseleave(function(ev) {
  cancelTouchRightClick();
});
$('#container').mouseup(function(ev) {
  if (cancelTouchRightClick() && ev.button === 2) {
    fireNormalRightClick();
  }
});
function cancelTouchRightClick () {
  if (global_timer) {
    clearTimeout(global_timer);
    global_timer = null;
    return true;
  }
  return false;
}
function fireTouchRightClick () {
  global_timer = null;
  // TODO touch right click
}

我还找到了一个用于在Github上做鼠标的回购:https://github.com/dna2github/dna2petal/tree/master/visualization https://github.com/dna2github/dna2petal/blob/master/samples/visualization.html

也许您需要将按钮类型传递给mousehold事件回调