touchmove 事件在移动端怎么阻止默认滚动? A. 艳平 提问于 2026-03-12 16:26:19 阅读 54 移动 我在做一个移动端的滑动组件,绑定了 touchmove 事件,但页面还是会跟着上下滚动,体验很糟。 试过在回调里加 e.preventDefault(),但有时候没效果,尤其是在 iOS Safari 上。是不是还要配合其他设置? 这是我的代码: element.addEventListener('touchmove', (e) => { e.preventDefault(); // 自定义滑动逻辑 }); 我来解答 赞 9 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 毓琳 Dev Lv1 iOS Safari 上单纯在 touchmove 里 preventDefault 不好使,你得在绑定事件的时候把 passive 关掉: element.addEventListener('touchmove', (e) => { e.preventDefault(); // 自定义滑动逻辑 }, { passive: false }); 或者更省事,直接给元素加 CSS: element { touch-action: none; } 第二种方式现在主流浏览器都支持,比写 JS 省心多了。 回复 点赞 2026-03-12 17:02 加载更多 相关推荐 1 回答 30 浏览 TouchMove 事件中 preventDefault 无效是怎么回事? 我在做一个移动端的滑动删除功能,监听了 touchmove 事件,想阻止页面滚动,但调用 e.preventDefault() 完全没用,页面还是跟着手指上下滚。我试过在 touchstart 里也加... Newb.子尧 交互 2026-03-04 20:55:17 1 回答 44 浏览 为什么给 touchmove 加 passive: false 会报控制台警告? 我在做一个移动端的拖拽组件,为了阻止默认滚动行为,给 touchmove 事件加了 { passive: false },但 Chrome 控制台一直提示“Consider marking event... 顺红酱~ 移动 2026-03-31 07:39:12 1 回答 43 浏览 移动端手势滑动时 touchmove 事件不触发怎么办? 我在做一个移动端的滑动组件,监听了 touchstart 和 touchmove 事件,但发现有时候手指滑动了,touchmove 根本没触发,只触发了 touchstart 和 touchend。我... 设计师楚萓 交互 2026-03-15 05:55:20 1 回答 59 浏览 touchmove 事件在移动端为什么有时候不触发? 我正在做一个移动端的滑动组件,监听了 touchmove 事件,但在某些安卓机上滑着滑着就突然不触发了,特别奇怪。试过 preventDefault 也没用,不知道是不是被浏览器默认行为干扰了? 这是... Air-静薇 移动 2026-03-27 09:16:22 2 回答 28 浏览 移动端 touchmove 监听加了 passive 为啥还是卡顿? 我在做移动端的滑动组件,给 touchmove 事件加了 { passive: true },但页面滚动还是明显卡顿,是不是我用错了? 之前没加 passive 的时候 Chrome 控制台有警告,加... Zz珍珍 优化 2026-03-09 11:51:18 2 回答 48 浏览 为什么移动端touch事件在子元素滑动时触发了父元素的touchmove? 我在开发移动端侧滑菜单时遇到问题:父容器有touchmove监听处理全局滚动,但子元素的可滑动区域(比如卡片)滑动时,父元素的事件也跟着触发了。我试过在子元素的touchmove里调用stopProp... 付楠 ☘︎ 移动 2026-02-03 23:52:31 2 回答 35 浏览 touchmove 事件在 React 中为什么不触发? 我在写一个移动端的滑动组件,给 div 加了 onTouchMove 事件,但手指滑动时完全没反应,onTouchStart 和 onTouchEnd 都能正常触发,就 touchmove 不行,这是... Good“统元 移动 2026-03-01 23:48:21 2 回答 33 浏览 touchmove 事件在移动端频繁触发导致性能卡顿怎么办? 我在用 React 做一个滑动删除组件,监听 touchmove 的时候发现页面特别卡,手指一划就掉帧。试过加 passive: true 但好像没太大改善,是不是我写法有问题? 这是我的事件绑定代码... Zz宏娟 移动 2026-02-27 15:17:18 2 回答 81 浏览 为什么 touchmove 事件在移动端会触发多次甚至卡顿? 我在做一个滑动删除功能,监听了 touchstart 和 touchmove,但发现手指稍微一动就触发好多次 touchmove,而且页面还会卡一下。是不是我哪里写错了? 我试过用 e.prevent... Mr-玉英 移动 2026-03-17 22:19:18 2 回答 81 浏览 移动端手势滑动时页面跟着滚动怎么解决? 我在开发一个支持左右滑动切换卡片的移动端页面,用touchstart和touchmove事件检测手势位移,但发现当手指滑动距离较大时页面会跟着滚动,导致手势识别不准。试过在touchmove里加e.p... Designer°国娟 移动 2026-02-12 09:08:31
或者更省事,直接给元素加 CSS:
第二种方式现在主流浏览器都支持,比写 JS 省心多了。