Czy kliknięcie prawym przyciskiem myszy jest zdarzeniem JavaScript? Jeśli tak, jak go używać?
źródło
Czy kliknięcie prawym przyciskiem myszy jest zdarzeniem JavaScript? Jeśli tak, jak go używać?
Jak wspominali inni, prawy przycisk myszy można wykryć za pomocą typowych zdarzeń myszy (przesunięcie kursora myszy, przesunięcie myszy, kliknięcie) . Jeśli jednak szukasz zdarzenia strzeleckiego, gdy pojawia się menu prawego przycisku myszy, szukasz w złym miejscu. Menu kontekstowe / kliknięcie prawym przyciskiem myszy jest również dostępne za pośrednictwem klawiatury (shift + F10 lub klawisz menu kontekstowego w systemie Windows i niektórych systemach Linux). W tej sytuacji wydarzenie, którego szukasz, to oncontextmenu
:
window.oncontextmenu = function ()
{
showCustomMenu();
return false; // cancel default menu
}
Jeśli chodzi o same zdarzenia myszy, przeglądarki ustawiają właściwość na obiekt zdarzenia, który jest dostępny z funkcji obsługi zdarzenia:
document.body.onclick = function (e) {
var isRightMB;
e = e || window.event;
if ("which" in e) // Gecko (Firefox), WebKit (Safari/Chrome) & Opera
isRightMB = e.which == 3;
else if ("button" in e) // IE, Opera
isRightMB = e.button == 2;
alert("Right mouse button " + (isRightMB ? "" : " was not") + "clicked!");
}
(isRightMB?"was not" : "")
powinno brzmieć(isRightMB?"was" : "was not")
. Dobrze ? Proszę o pomoc, aby to przejrzeć.onmousedown
ionmouseup
, ale nieonclick
. Najwyraźniej w Chromeonclick
jest uruchamiany tylko dla lewego przycisku myszy. (i tak, testowałem to wiele razy) Aby wykryć kliknięcie prawym przyciskiem myszy, musisz albo połączyćonmousedown
ionmouseup
, albo użyćoncontextmenu
.spójrz na następujący kod jQuery:
Wartość
which
będzie:źródło
.which
nie jest taki sam jak.button
? Oo.button
=> 0,1,2 ;which
=> 1,2,3 . to jest po prostu złe.Możesz wykorzystać wydarzenie
window.oncontextmenu
na przykład:źródło
window.oncontextmenu = function () { e.preventDefault() }
nie zadziałało.Tak, chociaż w3c twierdzi, że prawe kliknięcie można wykryć przez zdarzenie kliknięcia, onClick nie jest uruchamiany przez kliknięcie prawym przyciskiem w zwykłych przeglądarkach.
W rzeczywistości, kliknięcie prawym przyciskiem wywołuje tylko onMouseDown onMouseUp i onContextMenu.
W ten sposób można traktować „onContextMenu” jako zdarzenie kliknięcia prawym przyciskiem myszy. To standard HTML5.0.
źródło
Jeśli chcesz wykryć kliknięcie prawym przyciskiem myszy, nie powinieneś używać
MouseEvent.which
właściwości, ponieważ jest ona niestandardowa i występuje duża niekompatybilność między przeglądarkami. (patrz MDN ) Zamiast tego powinieneś użyćMouseEvent.button
. Zwraca liczbę reprezentującą dany przycisk:0
: Naciśnięto przycisk główny, zwykle lewy przycisk lub stan niezainicjalizowany1
: Wciśnięty przycisk pomocniczy, zwykle przycisk kółka lub przycisk środkowy (jeśli występuje)2
: Drugi przycisk wciśnięty, zwykle prawy przycisk3
: Czwarty przycisk, zazwyczaj przycisk Wstecz w przeglądarce4
: Piąty przycisk, zazwyczaj przycisk Przeglądarka do przoduMouseEvent.button
obsługuje więcej typów danych wejściowych niż zwykła mysz:Odniesienie:
źródło
Nie, ale możesz wykryć, który przycisk myszy został użyty w zdarzeniu „onmousedown” ... i na tej podstawie określić, czy było to „kliknięcie prawym przyciskiem”.
źródło
onmousedown
,onmouseup
ionclick
. Jeśli jednak patrzysz na zastąpienie menu prawego przycisku myszy, te zdarzenia nie są tym, czego powinieneś używać (zobacz moją odpowiedź poniżej).Poniższy kod używa jQuery do generowania
rightclick
zdarzenia niestandardowego na podstawie wartości domyślnychmousedown
imouseup
zdarzeń. Uwzględnia następujące kwestie:contextmenu
zdarzenie nie jest wyzwalane)on('contextmenu', ...)
robiźródło
Tak to jest!
źródło
elem.addEventListener("click", doSomething)
Tak, menu oncontextmenu jest prawdopodobnie najlepszą alternatywą, ale należy pamiętać, że uruchamia się po naciśnięciu myszy, podczas gdy kliknięcie uruchamia się po podniesieniu myszy.
Inne powiązane pytania dotyczyły podwójnego kliknięcia prawym przyciskiem myszy - które najwyraźniej nie jest obsługiwane, z wyjątkiem ręcznego sprawdzania timera. Jednym z powodów, dla których możesz chcieć mieć możliwość dwukrotnego kliknięcia prawym przyciskiem myszy, jest to, że potrzebujesz / chcesz obsługiwać leworęczne wprowadzanie myszy (odwrócenie przycisku). Wydaje się, że implementacje przeglądarek przyjmują wiele założeń dotyczących tego, jak powinniśmy używać dostępnych urządzeń wejściowych.
źródło
Najłatwiejszym sposobem na wykonanie prawego kliknięcia jest użycie
Jednak nie jest to rozwiązanie dla różnych przeglądarek, przeglądarki zachowują się inaczej w przypadku tego zdarzenia, zwłaszcza w przypadku przeglądarek Firefox i IE. Polecam poniżej rozwiązanie dla różnych przeglądarek
źródło
Jest to najłatwiejszy sposób na uruchomienie go i działa we wszystkich przeglądarkach z wyjątkiem przeglądarek internetowych aplikacji, takich jak (CefSharp Chromium itp.). Mam nadzieję, że mój kod Ci pomoże i powodzenia!
źródło
źródło
Jeśli chcesz wywołać funkcję, podczas gdy zdarzenie kliknięcia prawym przyciskiem oznacza, że możemy użyć następującego
źródło
To działa ze mną
źródło
Spróbuj użyć
which
i / lubbutton
własnościdemo
Trochę informacji tutaj
źródło
Obsługa zdarzenia przy użyciu
jQuery
bibliotekiźródło
Aby obsłużyć kliknięcie prawym przyciskiem myszy, możesz użyć zdarzenia „oncontextmenu”. Poniżej przykład:
powyższy kod ostrzega o pewnym tekście po naciśnięciu prawego przycisku myszy. Jeśli nie chcesz, aby pojawiło się domyślne menu przeglądarki, możesz dodać return false; Na końcu treść funkcji. Dzięki.
źródło
Tak, to zdarzenie myszy w javascript. Jest też wtyczka jQuery, która to robi
źródło