2009-06-15 18 views
5

Mam skrypt jQuery, który dołącza zdarzenie click do każdego linku, uruchamiając akcję po kliknięciu łącza. To działa dobrze, ale otrzymałem informację zwrotną od betatestera, która mnie udaremnia.Sposób pułapkowania "otwórz w nowej karcie" kliknięć w jquery.click

Użytkownik kliknął link prawym przyciskiem myszy i otworzył go w nowej karcie. Kiedy to zrobiła, jquery nie zatrzymał kliknięcia. BAD USER. Powieliłem to również za pomocą cmd-click.

Czy istnieje sposób uwięzienia tych gestów, czy to nieodłączne ograniczenie?

+0

Bardzo wątpię, czy jest to możliwe, biorąc pod uwagę zdarzenia DOM, które polegają na zakładkach pre-date w przeglądarkach. Nie wiem, jak odróżnić otwarcie w nowym oknie. – annakata

Odpowiedz

1

Więc chcesz uchwycić każde kliknięcie? Wydarzenie prawe czy środkowe? Czy nie powinien tego dokonać mousedown event?

Oczywiście, mogła prawym przyciskiem link właśnie do „Kopiuj adres odnośnika” ...

+0

Skończyłem w ten sposób. To przechwytuje wszystkie kliknięcia, co jest dokładnie tym, czego chciałem. Uprościło to również resztę kodu. Dziękuję Ci! –

2

Sprawdź, czy można jakoś wykorzystać jQuery plugin kliknij prawym przyciskiem myszy:

http://abeautifulsite.net/notebook/68

Zastosowanie:

$(document).ready(function() { 

    // Capture right click 
    $("#selector").rightClick(function(e) { 
     // Do something 
    }); 

    // Capture right mouse down 
    $("#selector").rightMouseDown(function(e) { 
     // Do something 
    }); 

    // Capture right mouseup 
    $("#selector").rightMouseUp(function(e) { 
     // Do something 
    }); 

    // Disable context menu on an element 
    $("#selector").noContext(); 

}); 

chodzi o bit CMD-clickie, ja naprawdę nie jestem pewien. W przypadku, gdy jest to pomocne, oto plugin jQuery skróty klawiszowe:

http://www.webappers.com/2008/07/31/bind-a-hot-key-combination-with-jquery-hotkeys/

+0

To jednak nie adresuje cmd + kliknięcie, prawda? – Sampson

+0

Dodałem link do zasobu, który może być przydatny w tym celu, ale nie jestem pewien, jak użyteczne może być. – karim79

+0

+1 za świetne linki. Pomyśl skróty klawiszowe powinny rozwiązać problem – TheVillageIdiot

0

Widziałem kod jquery.rightclick.js w Firebug. Istnieje modyfikatory z mousedown i mouseUp imprezy jak:

altKey ctrlKey

więc można użyć tych dwóch wyrażeń:

if (evt.altKey || evt.ctrKey)

w jquery.rightclick.js

Powiązane problemy