防止鼠标中键滚动

问题描述 投票:22回答:6

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

[我见过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:

我对阻止小滚动“罗盘”比停止页面滚动更感兴趣。我想从我的最初描述来看并不太清楚。

javascript jquery scroll mouseclick-event
6个回答
29
投票

用途:

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

在Chrome上有效:http://jsfiddle.net/PKpBN/3/


2
投票

无需为此仅包含jQuery。

如果您使用的是jQuery,这里已经有一些不错的答案。如果没有,您可以使用香草JS:

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

0
投票

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


0
投票

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

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

-1
投票
document.body.style.overflow=allowScroll?"":"hidden";

-4
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.