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

时间:2013-11-17 02:35:40

标签: javascript html 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;
}

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

3 个答案:

答案 0 :(得分:18)

你可以试试这个;

window.onwheel = function(){ return false; }

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

document.getElementById('{element-id}').onwheel = function(){ return false; }

干杯...

答案 1 :(得分:4)

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

$(window).bind('mousewheel DOMMouseScroll', function(event){ return false});

如果您想阻止在单个DOM元素中使用鼠标滚轮滚动,请尝试以下操作:

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

DOMMouseScroll 事件在Firefox中使用,因此您必须同时监听。

答案 2 :(得分:2)

我目前正在使用它,它工作正常。使用该栏滚动可以正常工作,但鼠标滚轮不起作用。

之所以这样做,是因为我有自定义代码以所需的方式滚动,但是如果不添加任何代码,它将不会滚动。

window.addEventListener('wheel', function(e) {  
    e.preventDefault();
    // add custom scroll code if you want
}