【问题标题】:Disable Mouse-wheel to scroll up or down禁用鼠标滚轮向上或向下滚动
【发布时间】:2014-09-18 09:45:11
【问题描述】:

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

  1. 在一页中,我需要禁用鼠标滚轮才能向上滚动。因此,当我用鼠标滚轮向上滚动时,什么也没有发生,但是当我向下滚动时,页面滚动。

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

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

【问题讨论】:

  • 不是真的,我需要禁用鼠标滚轮的单独方向。

标签: javascript jquery scroll mousewheel


【解决方案1】:

此代码适用于 id 为“mydiv”的 div。您可以将 mydiv 更改为 body 或您想要的任何其他元素。该代码适用于所有浏览器。

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】:

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

    $(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

    P。 S. 警告。由于更高版本的 Chrome 决定默认将所有窗口事件视为被动事件,因此上述代码在 Chrome 中不起作用。将提供更好的解决方案并尽快更新此答案。

    【讨论】:

    • 对不起,自从我使用此代码以来已经有一段时间了。纠正了自己。另外,添加了一个小提琴。
    • 刚刚在 Chrome 中测试了你的小提琴,它似乎不再工作了。
    • 是的,不幸的是,Chrome 默认将所有窗口事件设为被动,这意味着它们无法被阻止。我会想出更好的解决方案,暂时留下警告。
    【解决方案3】:

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

    JS:

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

    Link

    【讨论】:

    • @TheLittlePig 谢谢伙计,但只是为了您的信息,最近我做了这个禁用鼠标滚动。所以我想尽可能多地提出我的答案,然后我发布了它。我相信这与复制粘贴无关,而是以任何方式帮助他人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多