No se puede usar el controller de events click de jquery para detectar el clic derecho

Al tratar de detectar un clic con el button derecho del mouse con jquery, noté que el controller de events click no parece dispararse con un clic derecho del mouse, mientras que el mousedown o mouseup event handler lo hacen.

Por ejemplo, después de hacer clic con el button derecho en la testing div, las siguientes alertas 'testingn':

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

Sin embargo, lo siguiente no :

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

¿Alguien sabe por qué?

Como lo dice este artículo :

No hay events de clic para hacer clic con el button derecho en ningún browser.

Así que te quedan mousedown y mouseup en la mayoría de los browseres.

Cuando tu mousedown, el incluso disparado tiene event.which

Tomado desde aquí: cómo distinguir entre el clic izquierdo y derecho del mouse con 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'); } }); 

Entonces, en lugar de usar .click (), use mousedown y verifique los casos.

No estoy seguro de qué browser (s) ha probado, pero de acuerdo con MSDN, el onclick se activa "cuando el usuario hace clic con el button izquierdo del mouse". Es decir, por definición no ocurre para clics correctos (o medios). Dado que está en MSDN, puede esperar que IE se comporte de esa manera independientemente de lo que hagan los otros browseres.

(Onclick también se activa para ciertas cosas que no son del mouse, como cambiar ciertos elementos del formulario con el keyboard, etc.)

Sé que jQuery intenta normalizar el comportamiento entre los browseres, pero si el browser no activa el evento en absoluto …

Hay al less un plugin jQuery que conozco que implementa con el button derecho: http://abeautifulsite.net/blog/2008/05/jquery-right-click-plugin/ (No lo he usado, pero parece bueno, excepto que señala que Opera no lo admite).

También probé el siguiente código para get el clic derecho del mouse para cierta class de elementos

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

Este código no siempre capta el clic derecho.

    Intereting Posts