2010-07-08 5 views

Répondre

3

Il y a deux propriétés pour savoir quel bouton de la souris a été cliqué: quel bouton et. Notez que ces propriétés ne fonctionnent pas toujours sur un événement click. Pour détecter en toute sécurité un bouton de souris, vous devez utiliser les événements mousedown ou mouseup.

qui est une ancienne propriété Netscape. Le bouton gauche donne une valeur de 1, le bouton du milieu (molette de la souris) donne 2, le bouton droit donne 3. Aucun problème, sauf son maigre support (et le fait qu'il soit également utilisé pour la détection des clés).

Maintenant, le bouton a été encrassé au-delà de toute reconnaissance. Selon W3C ses valeurs doivent être:

* Left button – 0 
* Middle button – 1 
* Right button – 2 

Selon Microsoft ses valeurs doivent être:

* Left button – 1 
* Middle button – 4 
* Right button – 2 

Sans doute le modèle Microsoft est mieux que le W3C de. 0 devrait signifier "aucun bouton enfoncé", tout le reste est illogique. En outre, seules les valeurs des boutons du modèle Microsoft peuvent être combinées, de sorte que 5 signifierait "bouton gauche et milieu". Même Explorer 6 ne le supporte pas encore, mais dans le modèle W3C, une telle combinaison est théoriquement impossible: vous ne pouvez jamais savoir si le bouton gauche a également été cliqué. À mon avis, W3C a fait quelques erreurs sérieuses dans la définition du bouton. Clic droit

Heureusement, vous avez le plus souvent besoin de savoir si le bouton droit a été cliqué. Depuis que le W3C et Microsoft se sont mis d'accord sur celui-ci et donnent au bouton une valeur de 2, vous pouvez toujours détecter un clic droit.

function doSomething(e) { 
    var rightclick; 
    if (!e) var e = window.event; 
    if (e.which) rightclick = (e.which == 3); 
    else if (e.button) rightclick = (e.button == 2); 
    alert('Rightclick: ' + rightclick); // true or false 
} 

S'il vous plaît noter que, bien que les Mac ont un seul bouton de la souris, Mozilla donne un Ctrl-clic une valeur de touche de 2, puisque Ctrl-clic permet également le menu contextuel. iCab ne prend pas encore en charge les propriétés des boutons de la souris et vous ne pouvez pas encore détecter un clic droit dans Opera.

+0

Formatez votre code. –

+0

+1. Rédaction décente. Une discussion plus longue peut être trouvée ici: http://unixpapa.com/js/mouse.html –

+0

Au moment de ce +1, vérifier 'which' sur un événement' mouseover' diffère entre Chrome et IE/Firefox. Associez-vous définitivement aux événements mouseup/down appropriés pour plus de précision. – Aesthete

0

[jquery] [1] mentionne comment vous pouvez détecter le bouton de la souris ici: http://api.jquery.com/mousedown/

L'événement mousedown est envoyé lorsqu'un bouton de la souris est cliqué. Pour agir uniquement sur des boutons spécifiques, nous pouvons utiliser la propriété (Les navigateurs ne prennent pas en charge cette propriété (Internet Explorer utilise le bouton à la place), mais jQuery normalise la propriété afin de pouvoir l'utiliser en toute sécurité dans n'importe quel navigateur. La valeur dont sera 1 pour le bouton gauche, 2 pour le bouton central , ou 3 pour le bouton droit .

Questions connexes