在javascript中点按(无限制)或单击事件?

时间:2019-06-03 16:42:06

标签: javascript events mobile

我希望每当用户单击鼠标或触摸屏时触发事件。我尝试使用“点击”事件,但是在触摸屏上,它一直等到点击完成,并且比点击事件更多的是点击和释放。感觉不正确。

是否有一个事件可以点击(不释放)或单击监听?

P.S。这个问题(JavaScript custom tap event)与jquery有关。

1 个答案:

答案 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);
    });     
}