web-dev-qa-db-fra.com

Comment capturer l'événement clic droit en JavaScript?

Je souhaite bloquer les menus contextuels standard et gérer manuellement l'événement de clic droit.

Comment est-ce fait?

214
Giffyguy

Utilisez l'événement oncontextmenu.

Voici un exemple:

<div oncontextmenu="javascript:alert('success!');return false;">
    Lorem Ipsum
</div>

Et en utilisant les écouteurs d'événement:

el.addEventListener('contextmenu', function(ev) {
    ev.preventDefault();
    alert('success!');
    return false;
}, false);

N'oubliez pas de renvoyer false, sinon le menu contextuel standard apparaîtra toujours.

Si vous allez utiliser une fonction que vous avez écrite plutôt que javascript:alert("Success!"), n'oubliez pas de renvoyer false dans les DEUX fonctions ET l'attribut oncontextmenu.

304
Chase

Je pense que vous cherchez quelque chose comme ça:

   function rightclick() {
    var rightclick;
    var e = window.event;
    if (e.which) rightclick = (e.which == 3);
    else if (e.button) rightclick = (e.button == 2);
    alert(rightclick); // true or false, you can trap right click here by if comparison
}

( http://www.quirksmode.org/js/events_properties.html )

Et utilisez ensuite onmousedown même avec la fonction rightclick () (si vous voulez l’utiliser globalement sur toute la page, vous pouvez le faire <body onmousedown=rightclick(); >

31
cyber-guard