防止鼠标中键单击滚动

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

我已经看到使用javascript禁用中间点击滚动但是解决方案比我想要的更多hackey,并且似乎不是我实际可以使用的东西。

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

我当然对hacks和workarounds持开放态度。

仅仅因为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:

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

使用:

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

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

没有必要为此包含jQuery。

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

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

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

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

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

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

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