【发布时间】:2018-03-26 13:21:17
【问题描述】:
只是好奇mousedown 和mouseup 事件的用途,因为它们也在触摸设备上触发。 我认为mousedown 和touchstart 是互斥的(前者在桌面上工作,后者在触摸设备上工作),mouseup 和touchend 也是如此,但似乎情况并非如此。一个完整的触摸事件会触发上述所有事件:在 safari 和 chrome 上测试。因此,为了区分单击(鼠标)事件和单击(触摸)事件,我需要使用某种函数来告诉我这是否是触摸设备:
function isTouchDevice() {
return 'ontouchstart' in window // works on most browsers
|| navigator.maxTouchPoints; // works on IE10/11 and Surface
}
myElem.addEventListener("mousedown", () => {
if (isTouchDevice()) return;
// do something
}, false);
myElem.addEventListener("mouseup", () => {
if (isTouchDevice()) return;
// do something
}, false);
myElem.addEventListener("touchstart", () => {
// do something
}, false);
myElem.addEventListener("touchend", () => {
// do something
}, false);
我真的需要检查设备是否是触摸的,以区分鼠标点击和触摸点击吗?
【问题讨论】:
标签: javascript events touch mousedown mouseup