【问题标题】:How to Disable the Mouse wheel click Button?如何禁用鼠标滚轮单击按钮?
【发布时间】:2012-07-09 09:27:15
【问题描述】:

我正在尝试找到一种方法来禁用鼠标滚轮按钮的默认操作,即在新选项卡中打开链接。

这可能吗?

【问题讨论】:

标签: javascript jquery mousewheel


【解决方案1】:

Bind a generic click event handler that specifically checks for middle clicks。在该事件处理程序中,调用 e.preventDefault():

$("#foo").on('click', function(e) { 
   if( e.which == 2 ) {
      e.preventDefault();
   }
});

请注意,并非所有浏览器都支持阻止此默认操作。对我来说,它只适用于 Chrome。 Firefox、Opera 和 IE9 都不会通过鼠标中键单击引发 click 事件。它们确实会引发 mouseup 和 mousedown。

【讨论】:

  • 在 chrome 中不起作用 jsbin.com/arulub/edit#javascript,html 在 firefox 中也不起作用。请注意,您的代码是错误的,"click" 甚至不会触发中间/鼠标滚轮按钮。
  • @Christoph:抱歉,从建议的链接中复制了该内容。已更正。
  • @Esailija:为我在 Chrome 中工作。在 Firefox 中它确实没有。
  • @J.P.tenBerge 什么操作系统? "click" 不会因为在 Windows 7 NVM 中单击鼠标右键而触发。
  • @Esailija:在这里也使用 Windows 7,我在 Chrome 中点击中键。另外,我注意到 mouseup 和 mousedown 在其他浏览器中也会被触发。
【解决方案2】:

这对我有用...

$(document).on("mousedown", "selector", function (ev) {
    if (ev.which == 2) {
        ev.preventDefault();
        alert("middle button");
        return false;
    }
});

【讨论】:

  • 很抱歉添加了没有添加到封面的评论。但这太棒了。
【解决方案3】:

使用 JAVASCRIPT 禁用鼠标滚轮事件

IE 中:

document.attachEvent('onmousewheel', function(e){
     if (!e) var e = window.event;
     e.returnValue = false;
     e.cancelBubble = true;
     return false;
}, false);

Safari 中:

document.addEventListener('mousewheel', function(e){
    e.stopPropagation();
    e.preventDefault();
    e.cancelBubble = false;
    return false;
}, false);

Opera中:

document.attachEvent('mousewheel', function(e){
    if (!e) var e = window.event;
    e.returnValue = false;
    e.cancelBubble = true;
    return false;
}, false);

Firefox 中:

document.addEventListener('DOMMouseScroll', function(e){
    e.stopPropagation();
    e.preventDefault();
    e.cancelBubble = false;
    return false;
}, false);

【讨论】:

    【解决方案4】:

    我的代码:

    $(document).on('auxclick', 'a', function(e) {
    if (e.which === 2) { //middle Click
        e.preventDefault();
        e.stopPropagation();
        e.stopImmediatePropagation();
        return false;
    }
    return true;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多