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

时间:2016-05-10 10:17:56

标签: javascript html

以下代码在Chrome / Opera中运行良好但在Firefox / IE中无效。请帮助我。

$('.class name of anchor tag').mousedown(function(e){
  if(e.which==2)
  {
     e.preventDefault();
     window.location = '';
  }
});        

我想在超链接上禁用鼠标中键以防止在新标签中打开页面。代码应该在FF / IE中工作。我没有捕获事件的任何问题。事件触发得很好。一旦用户点击中间按钮(即事件触发时),阻止打开链接的代码是什么。

5 个答案:

答案 0 :(得分:2)

您可以将anchor tag元素放在另一个元素中 - 它将充当“容器”; - 或()在其上放​​置另一个透明元素,并通过父/ overlay元素处理/捕获click事件。

更新

即使上述技术是一种解决方法,它可以节省时间,如果“适当的修复”不可用,它可能是唯一的选择。这种技术在其他地方也很有用,因为点击事件处理需要更多控制。

如果你使用这种技术,使用“叠加”可以检测到:

如果点击了中键 - >忽视;别的 - >获取锚标记的 href值并使用以下内容进行相应导航:

overlay.onclick = function(event)
{
    event = (event || window.event);

    if (event.which == 2 || event.button == 4 )
    { return; }

    window.location.href = this.parentNode.getElementsByTagName('a')[0].href;
};

答案 1 :(得分:1)

试试这个

$('.class name of anchor tag').on("mousedown", "selector", function (e) {

答案 2 :(得分:1)

不要使用a-tag;改为使用跨度。无需打破网络

如果问题是:"如何防止事情按预期工作?"答案通常是 "不要这样做。"

如果您不控制来源,请将其从标记更改为范围:https://stackoverflow.com/a/13389835/474374

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我使用以下代码解决了我的问题,虽然它不令人满意,但它的工作效果比以前更好。

 $('.accordion-toggle').mousedown(function(e){
    if(e.which===2) {
        if(/Firefox|MSIE |Trident/i.test(navigator.userAgent)) {
            e.stopPropagation();
            e.preventDefault();
            window.location = 'index';
            return false;
        }
        else
        {
            e.preventDefault();
            window.location = '';
        }
    }
});

如果有人知道,完美的解决方案,请回复。