2011-09-26 38 views
11

我目前正在設計一個簡單的論壇應用程序。它主要由jQuery/AJAX驅動,並將所有內容加載到同一頁面;然而,我知道有時候用戶想要一次打開幾個主題,在瀏覽論壇時在新標籤中查看它們。jQuery:檢測鼠標單擊並在新標籤中打開目標

我對此的解決方案是檢測何時單擊鼠標中鍵並單擊鼠標左鍵,然後執行不同的操作。我想在點擊鼠標左鍵時在窗口中加載AJAX的目標,否則將它加載到一個新的選項卡中。

我唯一的問題是我不知道用jQuery在新選項卡中打開目標位置的方法。很明顯,不允許打開新選項卡,但有沒有辦法將這種類型的行爲分配給用戶生成的操作?

謝謝!

回答

15

請把眼光放在示例代碼。它可以幫助

<script type='text/javascript'> 
    jQuery(function($){ 
     $('a').mousedown(function(event) { 
      switch (event.which) { 
       case 1: 
        //alert('Left mouse button pressed'); 
        $(this).attr('target','_self'); 
        break; 
       case 2: 
        //alert('Middle mouse button pressed'); 
        $(this).attr('target','_blank'); 
        break; 
       case 3: 
        //alert('Right mouse button pressed'); 
        $(this).attr('target','_blank'); 
        break; 
       default: 
        //alert('You have a strange mouse'); 
        $(this).attr('target','_self"'); 
      } 
     }); 
    }); 
</script> 
+1

單擊鏈接時,是否會在執行操作之前更改目標屬性? – Phillip

+0

是的,我會在動作之前更改屬性。 –

+0

我想要當用戶點擊鏈接或打開一個新的標籤。鏈接隱藏,但通過這些方式,它可能只在IE瀏覽器...我能做什麼? –

0

中間鼠標按鈕的默認操作是在新選項卡中打開。

您可以將超鏈接目標屬性設置爲_blank以打開新選項卡。

<a href="#link" target="_blank">Link</a> 

您也可以參考這個問題How to distinguish between left and right mouse click with jQuery

+0

我需要編輯我的問題,並使其更清楚。我正在通過左鍵單擊加載AJAX目標,並在鼠標中鍵單擊時打開新選項卡。 – Phillip

1
$('#element').mousedown(function(event) { 
      if(event.which == 3) { // right click 
       window.open("newlocation.html",""); 
      } 
    }); 

實時查看http://jsfiddle.net/8CHTm/1/

+0

@菲利普我添加了一個小提琴。 – Ehtesham

9
<a href="some url" target="_newtab">content of the anchor</a> 

在javascript中您可以使用

$('#element').mousedown(function(event) { 
     if(event.which == 3) { // right click 
      window.open('page.html','_newtab'); 
     } 
}) 
+0

啊我看到了,不知道我可以在window.open上設置目標屬性。請試試這個。謝謝! – Phillip

+0

不用客氣...................:D:D:D:D –

5

您還需要考慮鍵Ctrl和CMD-點擊都用於打開新的選項卡(分別在windows/linux和mac中,因此,這將是一個更完整的解決方案:

jQuery.isClickEventRequestingNewTab = function(clickEvent) { 
    return clickEvent.metaKey || clickEvent.ctrlKey || clickEvent.which === 2; 
}; 
-1

請嘗試 「_newTab」 而不是 「_blank」

window.open(URL, 「_newtab」);