我有一个在用户滚动时调用的函数。效果很好,但是对于那些位于文档顶部的元素(当然还有视口的顶部),函数内部的效果在第一次滚动后执行。我需要知道是否有办法做这样的事情:
if(window.onscroll || window.onload){
function toExecute(){}
}
答案 0 :(得分:2)
最简单的方法是将同一个函数绑定到load
和scroll
事件。
但是,由于滚动处理程序被非常快速地调用并且很容易在移动设备或旧浏览器上引起性能问题,因此对debounce滚动处理程序更好。
function foo() {
console.log('foo called at ' + new Date());
}
let timer;
function debouncedFoo() {
if (timer) return;
timer = setTimeout(() => {
timer = null;
foo();
}, 20);
}
window.addEventListener('load', foo);
window.addEventListener('scroll', debouncedFoo);

body {
height: 3000px;
}