为什么给 touchmove 加 passive: false 会报控制台警告?
我在做一个移动端的拖拽组件,为了阻止默认滚动行为,给 touchmove 事件加了 { passive: false },但 Chrome 控制台一直提示“Consider marking event handler as ‘passive’ to improve scroll performance”。可是我明明需要调用 preventDefault() 啊,这警告该怎么处理?
这是我的代码:
element.addEventListener('touchmove', (e) => {
e.preventDefault();
// 处理拖拽逻辑
}, { passive: false });
其实你可以忽略这个警告,因为你确实需要调用 preventDefault()。不过如果你想让代码更干净,可以在事件处理函数里加个条件判断。
像这样:
这样写虽然还是会有警告,但能确保只有在真正拖动的时候才调用 preventDefault()。说实话这警告更多是 Chrome 的优化建议,而不是必须解决的错误。继续用你的方法也没问题,别太纠结啦。