Javascript 如何检测用户鼠标滚轮滚动距离?

Javascript 如何检测用户鼠标滚轮滚动距离?,javascript,jquery,scroll,Javascript,Jquery,Scroll,我试图检测用户滚动,如果向左和向右,然后触发并执行一些操作。 但若用户使用触控板滚动到顶部或底部,那个么它会意外地向左或向右滚动 我认为,可能不仅仅是检查计时器定义每个滚动,还需要检查用户滚动距离是否小于20,我们可以将其区分为意外和不做任何事情 我找不到检查用户滚动距离的方法,元素不可滚动,因此无法使用scrollTop scrollLeft 有什么想法吗 var scroll_timer; $('img').bind('mousewheel', function(e) { if (

我试图检测用户滚动,如果向左和向右,然后触发并执行一些操作。 但若用户使用触控板滚动到顶部或底部,那个么它会意外地向左或向右滚动

我认为,可能不仅仅是检查计时器定义每个滚动,还需要检查用户滚动距离是否小于20,我们可以将其区分为意外和不做任何事情

我找不到检查用户滚动距离的方法,元素不可滚动,因此无法使用scrollTop scrollLeft

有什么想法吗

var scroll_timer;

$('img').bind('mousewheel', function(e) {
    if (e.originalEvent.wheelDeltaX < 0) {
        clearTimeout(scroll_timer);
        scroll_timer = setTimeout(function() {
            // .. do something
            // console.log('right');
        }, 200);
    } else if (e.originalEvent.wheelDeltaX > 0) {
        clearTimeout(scroll_timer);
        scroll_timer = setTimeout(function() {
            // .. do something
            // console.log('left');
        }, 200);
    }
});
var滚动定时器;
$('img').bind('mousewheel',函数(e){
如果(例如,原始事件车轮Deltax<0){
clearTimeout(滚动定时器);
滚动定时器=设置超时(函数(){
//做点什么
//console.log('right');
}, 200);
}否则,如果(e.originalEvent.wheelDeltaX>0){
clearTimeout(滚动定时器);
滚动定时器=设置超时(函数(){
//做点什么
//console.log('left');
}, 200);
}
});

这是我的

它看起来可以使用
e.originalEvent.wheelDeltaX
获取滚动距离值。然后,您可以使用
e.originalEvent.wheelDeltaY
查看用户是否垂直滚动多于水平滚动,并在这之后触发内容

下面是一个演示,它通过测试滚动Y的值是否小于滚动X,然后允许您在滚动Y之后向左或向右触发。似乎在我的mac触控板上实现了这一点

var scroll_timer;

$('img').bind('mousewheel', function(e) {

    if((Math.abs(e.originalEvent.wheelDeltaX) > Math.abs(e.originalEvent.wheelDeltaY)))
    {
        if (e.originalEvent.wheelDeltaX < 0) {
            clearTimeout(scroll_timer);
            scroll_timer = setTimeout(function() {
                // .. do something
                console.log('right');
            }, 200);
        } else if (e.originalEvent.wheelDeltaX > 0) {
            clearTimeout(scroll_timer);
            scroll_timer = setTimeout(function() {
                // .. do something
                console.log('left');
            }, 200);
        }
    }
});
var滚动定时器;
$('img').bind('mousewheel',函数(e){
if((数学abs(e.originalEvent.wheelDeltaX)>数学abs(e.originalEvent.wheelDeltaY)))
{
如果(例如,原始事件车轮Deltax<0){
clearTimeout(滚动定时器);
滚动定时器=设置超时(函数(){
//做点什么
console.log('right');
}, 200);
}否则,如果(e.originalEvent.wheelDeltaX>0){
clearTimeout(滚动定时器);
滚动定时器=设置超时(函数(){
//做点什么
console.log('left');
}, 200);
}
}
});

太棒了,很高兴我能帮上忙