每当用户单击鼠标或触摸屏时,我都希望触发事件。我试过使用“点击”事件,但在触摸屏上它会等到点击完成,并且更多的是点击和释放而不是点击事件。感觉不太对。是否有点击(不释放)或点击收听的事件?
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);
});
}
添加回答
举报
0/150
提交
取消