24

我正在寻找一种方法来阻止鼠标中键单击导致浏览器开始滚动并显示小滚动“指南针”。

我已经看到使用 javascript 禁用中间单击滚动,但是该解决方案比我想要的要复杂一些,并且看起来不像我可以实际使用的东西。

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

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

仅仅因为 SO 问题在代码中看起来更好,这就是我用来在右键或中键单击时关闭工具提示的方法。

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:

我对阻止小滚动“指南针”比阻止页面滚动更感兴趣。我想这从我最初的描述中不是很清楚。

4

6 回答 6

30

采用:

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

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

于 2011-02-27T23:40:07.660 回答
2

没有必要仅仅为此包含 jQuery。

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

document.body.onmousedown = function(e) { if (e.button === 1) return false; }
于 2015-05-24T12:21:49.453 回答
2

用当前版本的 Firefox 和 chrome 测试

document.body.onmousedown = function(e) {
    if(e.button == 1) {
        e.preventDefault();
        return false;
    }
}
于 2020-05-28T11:16:06.000 回答
0

尝试使用return false;而不是e.preventScrolling();

于 2011-04-17T06:21:14.890 回答
-1
document.body.style.overflow=allowScroll?"":"hidden";
于 2011-02-28T12:18:14.710 回答
-4

如果你想完全停止滚动,这里是必需的代码:

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

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

于 2011-02-28T12:08:43.410 回答