防止鼠标滚轮滚动,但不阻止滚动条事件.JavaScript的

use*_*173 8 html javascript browser scroll

我需要通过滚动条使网页可滚动.我试图找到如何捕捉滚动条事件,但我认为这是不可能的.目前我使用这个功能:

function preventDefault(e) {
    e = e || window.event;
    if (e.preventDefault) {
        e.preventDefault();
    } else {
        e.returnValue = false;
    }
}
function wheel(e) {
    preventDefault(e);
}
function disable_scroll() {
    if (window.addEventListener) {
        window.addEventListener('DOMMouseScroll', wheel, false);
    }
    window.onmousewheel = document.onmousewheel = wheel;
}
Run Code Online (Sandbox Code Playgroud)

但它们在我的情况下并不是很有用,因为它们会阻止所有滚动事件.你有什么想法?我已经考虑了3天了,我没有找到任何答案(也有问题).谢谢!

SD.*_*SD. 18

你可以试试这个;

window.onwheel = function(){ return false; }
Run Code Online (Sandbox Code Playgroud)

这将阻止使用鼠标滚轮滚动窗口.如果<div>或其他元素的内容是可滚动的,你可以像这样阻止它;

document.getElementById('{element-id}').onwheel = function(){ return false; }
Run Code Online (Sandbox Code Playgroud)

干杯...

  • 这似乎不再起作用,在控制台中获取此内容:[Intervention] 由于目标被视为被动,因此无法阻止被动事件侦听器内的默认。请参阅 https://www.chromestatus.com/features/6662647093133312 (2认同)

小智 5

jQuery解决方案,以防止鼠标滚轮滚动窗口:

$(window).bind('mousewheel DOMMouseScroll', function(event){ return false});
Run Code Online (Sandbox Code Playgroud)

如果要防止使用鼠标滚轮滚动单个DOM元素,请尝试以下操作:

$('#{element-id}').bind('mousewheel DOMMouseScroll', function (e) { return false; });
Run Code Online (Sandbox Code Playgroud)

DOMMouseScroll事件在Firefox中使用,所以你要听两个。