js onscroll 如何监听是 手动滑动,还是 自动滑动
时间: 2024-03-20 12:39:22 浏览: 305
滑动监听关键代码
可以通过监听 `scroll` 事件来判断是手动滑动还是自动滑动。当用户手动滑动时,`scroll` 事件会频繁触发,而当是自动滑动时,`scroll` 事件触发的频率会比较低。
可以通过在 `scroll` 事件处理函数中设置一个定时器,在定时器中判断当前滚动位置是否发生变化。如果在定时器执行期间滚动位置发生了变化,说明是手动滑动;如果在定时器执行期间滚动位置没有发生变化,说明是自动滑动。
以下是一个示例代码:
```javascript
let lastScrollTop = 0;
let isAutoScrolling = false;
let timer = null;
window.addEventListener('scroll', function() {
const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
if (scrollTop !== lastScrollTop) {
// 手动滑动
clearTimeout(timer);
isAutoScrolling = false;
timer = null;
} else if (!isAutoScrolling) {
// 自动滑动
isAutoScrolling = true;
timer = setTimeout(() => {
isAutoScrolling = false;
timer = null;
}, 100);
}
lastScrollTop = scrollTop;
});
```
在上面的代码中,我们通过 `lastScrollTop` 变量来记录上一次的滚动位置,通过 `isAutoScrolling` 变量来记录当前是否是自动滑动。在 `scroll` 事件处理函数中,如果当前滚动位置发生了变化,说明是手动滑动,我们就清除定时器,并将 `isAutoScrolling` 设置为 `false`;如果当前滚动位置没有发生变化,说明是自动滑动,我们就设置 `isAutoScrolling` 为 `true`,并开启一个定时器,100ms 后将 `isAutoScrolling` 设置为 `false`。
阅读全文