2011-09-26 17 views
11

Obecnie projektuję prostą aplikację forum. Jest w większości zasilany przez jQuery/AJAX i ładuje wszystko na tej samej stronie; jednak wiem, że czasami użytkownicy chcą otworzyć kilka tematów jednocześnie, aby przeglądać je w nowych kartach podczas przeglądania forum.jQuery: Wykryj kliknięcie myszą i otwórz cel w nowej karcie

Moim rozwiązaniem było wykrycie kliknięcia środkowego przycisku myszy i kliknięcie lewym przyciskiem myszy, a następnie wykonanie różnych czynności. Chcę załadować cel za pomocą AJAX w oknie po kliknięciu lewym przyciskiem myszy, w przeciwnym razie załaduję go w nowej karcie.

Mój jedyny problem to nie wiem, jak otworzyć lokalizację docelową w nowej karcie z jQuery. Oczywiście otwarcie nowych zakładek jest dozwolone, ale czy istnieje sposób na przypisanie tego typu zachowania do działania generowanego przez użytkownika?

Dzięki!

Odpowiedz

15

Proszę spojrzeć na przykładowy kod. To może pomóc

<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

Po kliknięciu łącza zmieni się atrybut docelowy przed wykonaniem akcji? – Phillip

+0

Tak, zmienię atrybut przed akcją. –

+0

Chcę, gdy użytkownik kliknie na link lub otworzy nową kartę. Ukrywanie linku, ale w ten sposób możliwe tylko w IE ... co mogę zrobić? –

0

Domyślnym działaniem środkowego przycisku myszy jest otwarcie nowej karty.

Możesz ustawić adres docelowy hiperłącza na _blank, aby otworzyć nową kartę.

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

Można również odnieść się do tej kwestii How to distinguish between left and right mouse click with jQuery

+0

Muszę edytować moje pytanie i wyjaśnić je. Chcę załadować cel za pomocą AJAX po kliknięciu lewym przyciskiem myszy i otworzyć w nowej karcie za pomocą kliknięcia środkowym przyciskiem myszy. – Phillip

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

W JavaScript można użyć

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

Ah Widzę, nie wiedziałem, że mogę ustawić atrybut docelowy na window.open. Spróbuję tego. Dzięki! – Phillip

+0

zapraszamy ...................: D: D: D: D –

5

Trzeba również wziąć pod uwagę, że Ctrl-kliknij i cmd kliknięcie są służy do otwierania nowych kart (odpowiednio w systemach windows/linux i mac.) To byłoby bardziej kompletne rozwiązanie:

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

Spróbuj "_newTab" zamiast "_blank"

window.open (URL "_newtab");

Powiązane problemy