只是对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);
我是否真的需要检查设备是否触摸以区分鼠标点击和触摸点击?
1 回答
不,您不会也可能不应该尝试测试设备是否是触摸屏 . 如果要阻止其他事件触发,可以使用preventDefault方法 .
如果您想了解更多深入信息,请阅读以下文章:Touch and Mouse