我希望每当用户单击鼠标或触摸屏时触发事件。我尝试使用“点击”事件,但是在触摸屏上,它一直等到点击完成,并且比点击事件更多的是点击和释放。感觉不正确。
是否有一个事件可以点击(不释放)或单击监听?
P.S。这个问题(JavaScript custom tap event)与jquery有关。
答案 0 :(得分:0)
否,没有单个事件表示鼠标和触摸屏的默认“选择”操作。不过,您可以混合使用多种事件。
用户希望产生反应的两个最常见事件是“点击”和“ 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);
});
}