我希望每当用户点击鼠标或触摸屏时,都会触发一个事件。我尝试过使用"click“事件,但在触摸屏上,它会等待,直到点击完成,与其说是点击事件,不如说是点击即释放事件。感觉不太对劲。
是否存在轻触(无释放)或单击监听的事件?
附注:这个问题(JavaScript custom tap event)是关于jquery的。
发布于 2019-06-04 00:42:07
不,不存在代表鼠标和触摸屏的默认“选择”操作的单个事件。不过,您可以混合使用事件。
用户期望创建反应的两个最常见的事件是" click“和" touchstart ",但你不能简单地同时听到这两个事件,因为click事件通常是在touchstart事件之后触发的(导致双重触发)。
以下是一些用于避免此问题的简单代码:
function onTapOrClick(element, cb) {
let debounce; // temporarily disables on click events when touchstarts happen
element.addEventListener("touchstart", (event) => {
if (debounce) { clearTimeout(debounce); }
debounce = setTimeout(() => debounce = undefined, 1000); // debounce is 1000ms, could easily be longer
cb(event);
});
element.addEventListener("click", (event) => {
if (debounce) { return; }
cb(event);
});
}https://stackoverflow.com/questions/56431434
复制相似问题