众所周知,scroll
事件可以通过使用鼠标滚轮、单击滚动条箭头或动态地使用 window.scrollTo(left, top)
函数来触发。
是否有可能确定是什么导致了 scroll
事件启动?是用户干预还是JS代码?
最佳答案
我认为您无法确定导致滚动的原因。滚动事件仅表示窗口正在滚动,而不是为什么它在滚动。
但也许您在从您的代码调用 window.scrollTo()
之前暂停了滚动事件监听器或设置了一个标志。在 Safari 中,如果您使用 scrollTo()
,滚动事件只会触发一次,无论您滚动多少,因此您可以想象做这样的事情:
// somewhere in your code...
isCodedScrollEvent = true;
window.scrollTo(0, 200);
// elsewhere in your code...
function scrollListener(event) {
if( isCodedScrollEvent ) {
// event was caused by code, so handle it differently
// and then flip the flag back to false, so the next
// will be handled normally again
isCodedScrollEvent = false;
} else {
// event was caused by user
}
}
它不是很漂亮,但它应该可以工作
关于javascript - 确定导致滚动事件启动的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6995232/