javascript - 确定导致滚动事件启动的原因

标签 javascript javascript-events

众所周知,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/

相关文章:

javascript - 图像未动态显示

javascript - 查找数组中的唯一元素并查找重复元素的字段(例如标记)之和

javascript - 从soundcloud获取歌曲信息,有歌曲id

javascript - IE 和 Firefox 中的 window.onmousemove

javascript - javascript中onclick和click的区别

javascript - Bootstrap 弹出窗口无法正常工作

javascript - 通过ajax向服务器发送base64图像

javascript-events - 如何从 javascript 代码中向 HTML 按钮添加事件处理程序

javascript - 是否使用 ".click()"异步触发事件监听器?

javascript - 是否有一个普通函数可以在不影响后代节点的情况下删除所有事件监听器?