JavaScript 在使用了e.preventDefault(); 如何让移动端浏览器可以正常上下滑动
时间: 2024-05-12 11:17:20 浏览: 100
当使用了 e.preventDefault() 后,禁止了默认的滑动事件。如果想要在移动端浏览器中正常上下滑动,可以使用 touchstart 和 touchmove 事件来模拟滑动事件,并改变元素的 scrollTop 属性。具体的代码实现可以类似这样:
```
var ele = document.getElementById('app');
var startY = 0;
var moveY = 0;
var deltaY = 0;
ele.addEventListener('touchstart', function(e) {
startY = e.touches[0].pageY;
moveY = 0;
deltaY = 0;
});
ele.addEventListener('touchmove', function(e) {
moveY = e.touches[0].pageY;
deltaY = moveY - startY;
// 如果滚动到了容器的顶部,并且向下滑动,就让浏览器滚动
if (ele.scrollTop === 0 && deltaY > 0) {
e.preventDefault();
}
// 如果滚动到了容器的底部,并且向上滑动,也让浏览器滚动
if (ele.scrollTop === ele.scrollHeight - ele.offsetHeight && deltaY < 0) {
e.preventDefault();
}
ele.scrollTop -= deltaY;
});
```
这段代码监听了 touchstart 和 touchmove 事件来模拟滑动。当向上滑动的时候,元素的 scrollTop 属性减去 deltaY,从而模拟向上滑动的效果。当滑到容器的顶部或者底部的时候,就让浏览器处理滑动事件。这样就可以让移动端浏览器正常上下滑动了。
阅读全文