2015-12-03 93 views
0

在某些網站上,您可以右鍵單擊某個鏈接並選擇「在新標籤中打開」,並且工作正常,但如果使用鼠標中鍵這樣做。 我遇到過這幾次,它不是太煩人,但我仍然好奇是什麼原因導致了這種行爲。 (關於HOW) 這裏是表現這種方式瀏覽使用Chrome 46網站: http://ebookfriendly.com/free-public-domain-books-sources/ HTML鏈接標記看起來正常:JavaScript禁止在新標籤中打開鏈接的鼠標中鍵

<a title="Feedbooks" href="http://www.feedbooks.com/">⇢ Feedbooks</a>

原因一定有什麼東西在JavaScript 。任何指針?

回答

1

看起來像這個鏈接有一個事件監聽器,使用preventDefault()並通過其他方式打開該頁面。

編輯:很難說,爲什麼正是他們這樣做,但是當我看着整個處理程序似乎鏈路傳送至Google Analytics(分析):

function(e) { 
    var n = this.getAttribute("href"), 
     i = "string" == typeof this.getAttribute("target") ? this.getAttribute("target") : ""; 
    ga("send", "event", "outbound", "click", n, { 
     hitCallback: t(n, i) 
    }, { 
     nonInteraction: 1 
    }), e.preventDefault() 
} 
+0

感謝您的快速答覆。作爲「frontend_dev」你能告訴我這種做法的任何理由嗎? –

+0

看到我上面修改的答案。所以這似乎歸功於Google Analytics(分析)。 –

+0

這裏的答案將幫助你,只要確保你訪問鼠標中間按鈕的鍵碼,並做一個語句來檢查它是否是該按鈕(我認爲它的2)否則你會阻止所有點擊事件的工作在所有的鏈接/鏈接 – TrojanMorse

1

你可以問哪個按鈕引起事件並防止默認行爲。

document.querySelector("a").addEventListener("click", function(e) { 
    if (e.which === 2) { 
     e.preventDefault(); 
    } 
}, false); 
+0

好的答案,我只是在接受的答案作出評論關於檢查正確的鍵碼。 +1 – TrojanMorse

+0

因此,如果期望的行爲被preventDefault()阻止,鏈接仍然會被打開,因爲有一些函數正在監聽我猜測的mouseup事件? –

+0

如果您使用鼠標中鍵,鏈接將不會打開,而在其他情況下,瀏覽器將按預期行事。 – Sagi

0
$(document).mousedown(function(e){ 
     if(e.which == 2){ 
      e.preventDefault(); 
      alert("middle click"); 
      return false; 
     } 
    }); 

作品只有當你保持警覺()

相關問題