如何禁用鼠标中键单击以在新选项卡或新窗口中打开

时间:2017-06-28 09:02:52

标签: javascript jquery html mouseevent mousewheel

我正在尝试禁用鼠标的右键和中键,以便在单击任何菜单或超链接时无法打开新窗口或选项卡。下面的javascript代码适用于右键但不适用于中键。鼠标中键被捕获,但单击超链接或菜单时仍会打开新窗口或选项卡。

<script type="text/javascript">
    if (document.layers) {           
        document.captureEvents(Event.MOUSEDOWN);
        document.onmousedown = function () {
            return false;
        };
    }
    else {
        document.onmouseup = function (e) {
            if (e != null && e.type == "mouseup") {      

                if (e.which == 3) {
                    alert("Sorry..... Right click Is Disabled!!!!");                        
                        return false;
                }

                if(e.which===2)
                {
                   e.preventDefault();
                    e.stopImmediatePropagation();
                    alert("Sorry..... Mouse Scroll click Is Disabled!!!!");
                    return false;
                }
                else if(e.button===4)
                {
                    e.preventDefault();
                    e.stopImmediatePropagation();
                    alert("Sorry..... Mouse Scroll click Is Disabled!!!!");
                    return false;
                }
            }
        };
    }

它没有为firefox,chrome和IE而烦恼。

2 个答案:

答案 0 :(得分:0)

document.onmousedown= function (e) {
    if( e.which == 2 ) {
        e.preventDefault();
        alert("middle button"); 
    }
}

答案 1 :(得分:0)

根据MDNauxclick事件处理“使用鼠标中键在新标签页中打开链接”行为。

下面的代码将阻止整个页面的中间点击行为。

window.addEventListener("auxclick", (event) => {
  if (event.button === 1) event.preventDefault();
});

如果只想对特定链接禁用它,只需将事件侦听器目标(窗口)替换为对特定节点的引用即可。