我希望每当用户滚动时都会触发一个处理程序,但我不希望当浏览器代表用户滚动时发生这种情况。例如,下面的文档作为 onload 的一部分自行滚动。这会触发我的滚动处理程序,但我不希望它这样做。即使我删除了 onload,仍然存在一个问题:如果用户滚动然后重新加载页面,则处理程序会在重新加载时触发。再说一遍,我不想这样。
处理程序可以检测到是谁导致它被解雇吗?
<html>
<body onscroll="alert('scroll detected')"
onload="window.scrollBy(0, document.height)">
aaa<br/>bbb<br/>ccc<br/>ddd<br/>eee<br/>fff<br/>ggg<br/>hhh<br/>iii<br/>
jjj<br/>kkk<br/>lll<br/>mmm<br/>nnn<br/>ooo<br/>ppp<br/>qqq<br/>rrr<br/>
sss<br/>ttt<br/>uuu<br/>vvv<br/>www<br/>xxx<br/>yyy<br/>zzz
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
如何在事件onscroll期间添加事件document.onReady,而不是内联在正文命令上?我认为这应该允许浏览器滚动到添加事件之前的位置onScroll。
另一种选择是添加一个setTimeout()调用函数,onscroll以在文档完全渲染后几百毫秒添加事件。