Press 手势在移动端为什么没反应?

上官东俊 阅读 3

我在用 Hammer.js 做一个移动端的长按删除功能,绑定了 press 事件,但在手机上点按完全没触发,试了 preventDefault 也没用。本地开发环境 Chrome 模拟器倒是能识别,真机就不行,是不是我样式哪里挡住了?

这是我的按钮样式:

.delete-btn {
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
  user-select: none;
}
我来解答 赞 0 收藏
二维码
手机扫码查看
1 条解答
Designer°志红
问题不是样式挡住,是移动端长按会触发系统上下文菜单,把你的 press 事件吞了。

在按钮上阻止默认的 contextmenu 事件就行:

const btn = document.querySelector('.delete-btn');

btn.addEventListener('contextmenu', (e) => {
e.preventDefault();
});

const hammer = new Hammer(btn);
hammer.on('press', () => {
// 删除逻辑
});


或者直接在整个按钮上加 oncontextmenu="return false" 也行。
点赞
2026-03-19 21:00