簡體   English   中英

如何禁用鼠標中鍵單擊超鏈接以在新選項卡或新窗口中打開?

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

以下代碼在Chrome / Opera中運行良好,但在Firefox / IE中不起作用。請幫幫我。

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

我想禁用超鏈接上的鼠標中鍵以防止在新標簽頁中打開頁面。該代碼應在FF / IE中有效。捕獲事件沒有任何問題。 事件觸發得很好。一旦用戶單擊中間按鈕(即事件觸發時),阻止打開鏈接的代碼是什么。

您可以將anchor tag元素放置在另一個元素內,該元素將充當“容器”; -或(並)在其上放​​置另一個透明元素,並通過parent / overlay元素處理/捕獲click事件。

更新:

即使上述技術是一種變通辦法,也可以節省時間,並且如果沒有“適當的修復程序”,它可能是唯一的選擇。 該技術在其他地方也很有用,因為在其他地方需要更多控制才能進行點擊事件處理。

如果您確實應用了此技術,則可以使用“疊加層”來檢測:

如果單擊了中間按鈕 ->忽略; 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;
};

試試這個

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

不要使用a-tag; 請改用跨度。 無需中斷網絡

如果問題是:“如何防止事情按預期進行?” 答案通常是 “不要那樣做”。

如果您不控制源,請將其從標簽更改為跨度: https : //stackoverflow.com/a/13389835/474374

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

如果有人知道完美的解決方案,請回答。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM