有没有办法检测是否有一个' 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
//...
}
答案 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事件回调