为了账号安全,请及时绑定邮箱和手机立即绑定

在 javascript 中点击 (no realease) 或点击事件?

在 javascript 中点击 (no realease) 或点击事件?

小怪兽爱吃肉 2021-06-09 09:13:49
每当用户单击鼠标或触摸屏时,我都希望触发事件。我试过使用“点击”事件,但在触摸屏上它会等到点击完成,并且更多的是点击和释放而不是点击事件。感觉不太对。是否有点击(不释放)或点击收听的事件?
查看完整描述

1 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

不,没有单个事件代表鼠标和触摸屏的默认“选择”操作。但是,您可以混合使用事件。


用户希望创建反应的两个最常见事件是“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);

    });     

}


查看完整回答
反对 回复 2021-06-18
  • 1 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信