如何使用Javascript中的preventDefault()使鼠标中键正常工作

时间:2015-01-24 08:37:34

标签: javascript

我想用鼠标中键打开新标签中的链接,但我发现event.preventDefault()在打开新标签时停止了中间点击。

我必须使用event.preventDefault(),因为我的链接用于触发灯箱,但我希望用户能够使用鼠标中键在新标签中打开此链接,我该怎么做?

演示



document.getElementById("test").addEventListener("click", function(e) {
    e.preventDefault();
});

<a id="test" target="_blank" href="//jsbin.com/wemowe">Click</a>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

您可以将其设置为有条件,这样就不会阻止鼠标中键,即2

document.getElementById("test").addEventListener("click", function(e) {
    if ( e.which !== 2 )
         e.preventDefault();
});

支持旧IE的更多跨浏览器解决方案也是

document.getElementById("test").addEventListener("click", function(e) {
    var evt = (e == null ? event : e), prevented = true;

    if (evt.which) {
        if (evt.which == 2) prevented = false;
    } else if (evt.button) {
        if (evt.button == 4) prevented = false;
    }

    if (prevented) evt.preventDefault();
});