【发布时间】:2016-09-12 16:42:28
【问题描述】:
有没有办法检测“mousedown”是触摸式右键单击(将手指保持在原位约 1 秒)还是只是正常的右键单击?
我认为 chrome 可以使用“ev.originalEvent.sourceCapabilities.firesTouchEvents”来做到这一点。但只有铬。
$('#container').mousedown(function(ev) {
if (ev.button === 2 && ev.comesFromTouch) return false
//...
}
编辑: 当前情况:在我按下鼠标左键大约一秒钟后,浏览器会自动触发 button = 2 的“mousedown”事件(在 chrome 的“设备工具栏”模式下测试)。我想取消这个。
解决方案 如果在 touchstart 和 touchend 之间出现鼠标右键,则它是在触摸屏上单击鼠标右键。
它的工作原理是这样的。
function onPcRight() { console.log(1);}
function onTouchRight() { console.log(2);}
$('#container').mousedown(function(ev) {
if (ev.button === BUTTON_RIGHT) {
if ($(this).prop('touchdown')) onTouchRight();
else onPcRight();
}
})
.on('touchstart', function() {
$(this).prop('touchdown', true);
})
.on('touchend', function() {
$(this).prop('touchdown', false);
});
【问题讨论】:
标签: javascript touch right-click