从网上扒了一套别人的模板,在PC浏览器和谷歌浏览器手机模拟器里都是正常的, 结果无意间用手机测试一下,只能显示一屏,不能上下左右滚动。
结果查看CSS,发现人家在全局CSS里加了一句:*{touch-action:none}
这段代码是做什么用? 禁止触发默认的手势操作, 如果不加这段CSS,是可以正常滑动了,但谷歌浏览器会报一个如下的preventDefault错误, 虽然这个错误没发现什么影响,但终究看着不顺眼.
[Intervention] Unable to preventDefault inside passive event listener due to target being treated as passive. See…
然后网上找了一个js的解决方案,在touch的事件监听方法上绑定第三个参数{ passive: false }
elem.addEventListener(
'touchstart',
fn,
{ passive: false }
);
详细介绍请谷歌,为避免踩坑,也有很多类似框架已经解决。