禁用鼠标滚轮向上或向下滚动

时间:2014-09-18 09:45:11

标签: javascript jquery scroll mousewheel

我有两页,这些是我无法达到的条件,如果不可能,请告诉我。

  1. 在一个页面中,我需要禁用鼠标滚轮向上滚动。因此,当我用鼠标滚轮向上滚动时没有任何反应,但当我向下滚动页面滚动时。

  2. 在另一页中,我想要完全相反,我需要禁用向下滚动鼠标滚轮。因此,当我向下滚动时没有任何反应,但是当我向上滚动页面滚动时。

  3. 这就是我真正需要的,但如果您认为我需要解释更多,请告诉我,谢谢。

3 个答案:

答案 0 :(得分:4)

防止鼠标向下滚动的情况(对于鼠标向上滚动,只需将比较运算符更改为'<'):

$(window).on("wheel mousewheel", function(e){
    if(e.originalEvent.deltaY > 0) {
        e.preventDefault();
        return;
    } else if (e.originalEvent.wheelDeltaY < 0) {
        e.preventDefault();
        return;
    }    
});

由于跨浏览器问题,我们需要检查两个值。

jsFiddle link

答案 1 :(得分:2)

此代码适用于ID为#34; mydiv&#34;的div。您可以将mydiv更改为正文或任何其他所需元素。该代码适用于所有浏览器。

<强> JS:

var mydiv = document.getElementById("mydiv");
if (mydiv.addEventListener) {
    // IE9, Chrome, Safari, Opera
    mydiv.addEventListener("mousewheel", MouseWheelHandler, false);
    // Firefox
    mydiv.addEventListener("DOMMouseScroll", MouseWheelHandler, false);
}
// IE 6/7/8
else 
    mydiv.attachEvent("onmousewheel", MouseWheelHandler);


function MouseWheelHandler(e) {

    // cross-browser wheel delta
    var e = window.event || e; // old IE support
    var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));

    if(delta==1)         // if mouse scrolls up
    {
         alert('up');  
    }
    if(delta==-1)        // if mouse scrolls down, we disable scrolling.
    {
        e.preventDefault();
        e.stopPropagation();
        return false;
    }
    return false;
}

注意:请记住将溢出设置为自动或滚动此功能。

一个工作示例:Click Here

希望这有帮助。

答案 2 :(得分:-2)

您可以尝试此操作以禁用鼠标滚动。我知道这不是你的问题,但我相信它可以帮助你。

<强> JS:

function disableMouseScroll() {
    return false;
}
document.onmousewheel=disableMouseScroll;

Link