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

How to disable mouse middle button click on hyperlink to open in a new tab or new window?

本文关键字:新窗口 窗口 何禁用 新选项 鼠标中键单击 选项 超链接      更新时间:2023-09-26

以下代码在Chrome/Opera中运行良好,但在Firefox/IE中不起作用。请帮帮我。

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

我想禁用超链接上的鼠标中键,以防止在新选项卡中打开页面。代码应该在FF/IE中工作。我在捕捉事件方面没有任何问题。事件触发良好。当用户单击中间按钮(即事件触发时),防止打开链接的代码是什么。

尝试使用此

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

您可以将anchor tag元素放置在另一个元素中,该元素将充当"容器"-或者(和)在其上放置另一个透明元素,并通过父元素/覆盖元素来处理/捕获点击事件。

更新:

尽管上述技术是一种变通方法,但它可以节省时间,如果无法获得"适当的修复",它可能是唯一的选择。这种技术在其他地方也很有用,因为点击事件处理需要更多的控制。

如果你真的应用了这种技术,使用"叠加"你可以检测到:

如果单击中间按钮,则忽略;else->获取锚点标记的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;
};
$(document).on("mousedown", "selector", function (ev) {
    if (ev.which == 2) {
        ev.preventDefault();
        alert("middle button");
        return false;
    }
});

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

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

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

不要使用a标记;请改用跨度。无需破坏网络

如果问题是:"我如何防止事情按预期进行?"答案是通常"不要那样做。"

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