Impossible d'utiliser le gestionnaire d'événements de clic de jquery pour détecter le clic droit

En essayant de détecter un clic droit de la souris avec jquery, j'ai remarqué que le gestionnaire d'événements de clic ne semble pas être déclenché avec un clic droit de la souris, alors que le gestionnaire d'événements mousedown ou mouseup le fait.

Par exemple, après un clic droit sur le test div, les tests d'alerte suivants! ':

$('#test').mousedown(function(e) { alert('testing'); }); 

Cependant, ce qui suit:

 $('#test').click(function(e) { alert('testing!'); }); 

Quelqu'un sait-il pourquoi?

Comme cet article le dit:

Il n'y a aucun événement de clic pour les clics sur les boutons droits dans n'importe quel navigateur.

Donc vous êtes restés avec mousedown et mouseup dans la plupart des navigateurs.

Lorsque vous mousedown, le même feu a un event.which

Tiré d'ici: comment distinguer entre le clic gauche et droit de la souris avec jQuery

 $('#element').mousedown(function(event) { switch (event.which) { case 1: alert('Left mouse button pressed'); break; case 2: alert('Middle mouse button pressed'); break; case 3: alert('Right mouse button pressed'); break; default: alert('You have a strange mouse'); } }); 

Donc, au lieu d'utiliser .click (), utilisez mousedown et vérifiez les cas.

Vous ne savez pas quel navigateur vous avez testé, mais selon MSDN, les feux d' appel "lorsque l'utilisateur clique sur le bouton gauche de la souris". C'est-à-dire, par définition, il ne se produit pas pour les clics à droite (ou au milieu). Étant donné que c'est sur MSDN, vous pouvez vous attendre à ce que IE se comporte de cette façon, peu importe ce que font les autres navigateurs.

(Onclick déclenche également certaines choses non-souris, comme changer certains éléments de forme avec le clavier, etc.)

Je sais que jQuery essaie de normaliser le comportement entre les navigateurs, mais si le navigateur ne déclenche pas l'événement …

Il y a au moins un plugin jQuery que je connais qui implémente le clic droit: http://abeautifulsite.net/blog/2008/05/jquery-right-click-plugin/ (je ne l'ai pas utilisé, mais ça semble Bien, sauf qu'il note que Opera ne l'appuie pas).

J'ai également essayé le code suivant pour attraper le clic droit de la souris pour certaines classes d'éléments

 $(".brick").mousedown(function (event) { if (event.which === 3) { currentRightClickedTileID = $(this).attr("id"); } }); 

Ce code ne touche pas toujours le clic droit.