繁体   English   中英

防止鼠标中键滚动

[英]Prevent middle mouse click scrolling

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

我已经看到使用 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:

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

用:

$('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; }

使用当前版本的 Firefox 和 chrome 进行测试

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM