我正在博物馆环境中展示一个网络项目。这是一个依赖滚动的项目,需要在用户之间重置。我想设置一个计时器,它将在用户离开计算机后将页面滚动到顶部并重新加载。我做了一些研究,这是我到目前为止所确定的。如果用户在两分钟后仍未滚动,它将重置页面:
// Setup isScrolling variable
let isScrolling;
// Listen for scroll events
window.addEventListener('scroll', event => {
// Clear our timeout throughout the scroll
window.clearTimeout(isScrolling);
// Set a timeout to run after scrolling ends
isScrolling = setTimeout(() => {
// scroll to top and refresh page
console.log('Scrolling has stopped.');
window.scrollTo(0,0);
location.reload();
}, 120000);
}, false);
这是解决此问题的最佳方法吗?在每个滚动上运行事件侦听器是否会非常耗费资源,或者这几乎是这样做的方式?
答案 0 :(得分:0)
似乎还可以。您可以考虑的一件事是去抖动: http://benalman.com/code/projects/jquery-throttle-debounce/examples/debounce/
这将防止在每个滚动事件上设置新的超时。