防止鼠标中键单击滚动

时间:2011-02-27 23:32:24

标签: javascript jquery scroll mouseclick-event

我正在寻找一种方法来停止鼠标中键,使浏览器开始滚动,并显示小滚动'指南针'。

我见过Disabling middle click scrolling with javascript但是解决方案比我想要的更复杂,并且看起来不像我实际使用的那样。

我正在寻找一个更明确的“你就是这样做”或“你不能那样做,儿子”。

我当然愿意接受黑客攻击和解决方法。

仅仅因为S.O.问题看起来更好用代码,这是我用来在右键或中键点击时关闭工具提示。

msg.mousedown(function(e) {
    if (e.which == 2) {   //middle mouse click
        msg.hide();
        e.preventScrolling();   //if only this worked...
    }
    else if (e.which == 3) {   //right mouse click
        msg.hide();
    }
}).bind('contextmenu', function(e) {
    e.preventDefault();
}).click(function(e) {
    e.stopPropagation();
});

编辑:jQuery,JavaScript,无论如何,让我们现在玩的很好:)

编辑2:

我更有兴趣阻止小滚动“罗盘”而不是阻止页面滚动。我想从我最初的描述中不是很清楚。

6 个答案:

答案 0 :(得分:27)

使用:

$('body').mousedown(function(e){if(e.button==1)return false});

适用于Chrome:http://jsfiddle.net/PKpBN/3/

答案 1 :(得分:1)

没有必要为此包含jQuery。

如果您使用的是jQuery,那么这里已经有了一些很棒的答案。如果没有,你可以使用vanilla JS:

document.body.onmousedown = function(e) { if (e.button === 1) return false; }

答案 2 :(得分:0)

尝试使用return false;代替e.preventScrolling();

答案 3 :(得分:0)

使用最新版本的Firefox和chrome测试

document.body.onmousedown = function(e) {
    if(e.button == 1) {
        e.preventDefault();
        return false;
    }
}

答案 4 :(得分:-1)

document.body.style.overflow=allowScroll?"":"hidden";

答案 5 :(得分:-4)

如果您想完全停止滚动,请输入以下代码:

window.onscroll = function() {
    document.body.scrollTop = 0;
}

这将有效地禁用中间按钮..