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

时间:2011-08-09 11:11:03

标签: javascript javascript-events

众所周知,使用鼠标滚轮,点击滚动条箭头或使用scroll功能动态启动window.scrollTo(left, top)事件。

是否可以确定导致scroll事件发生的原因?无论是用户干预还是JS代码?

1 个答案:

答案 0 :(得分:5)

我认为你无法确定导致滚动的原因。滚动事件仅表示窗口正在滚动,而不是为什么滚动。

但也许您在从代码中调用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
    }
}

它不漂亮,但它应该工作

相关问题