2010-10-03 6 views
0

Je veux être en mesure d'écrire du code pour répondre (séparement) aux événements suivants:Comment répondre aux clics de la souris en Javascript?

  1. main Faites un clic droit
  2. main gauche cliquez
  3. bouton central clic (en option - agréable d'avoir, mais je peux vivre sans cela).

Y a-t-il une manière intégrée en Javascript que je puisse répondre à ces événements, ou ai-je besoin d'utiliser une bibliothèque (de préférence jQuery)?

Répondre

1
$('#your_element').mousedown(function(event) { 
    switch (event.which) 
    { 
     case 1: 
      // left mouse 
      break; 
     case 2: 
      // middle mouse 
      break; 
     case 3: 
      // right mouse 
      break; 
     default: 
      // some sort of bizarre mouse! fallback 
      break; 
    } 
}); 
+0

Hehe ... Voilà pourquoi j'AIME jQuery! – skyeagle

+0

@skyeagle - jQuery est un amour typique ou déteste ce genre de scénario. Je l'aime à cause des sélecteurs fantastiques et parce que je n'ai jamais besoin de m'inquiéter des différences entre les navigateurs comme dans cet exemple si vous deviez coder ceci avec du JavaScript "normal". – chigley

+4

Important de noter que rien de ce que vous faites dans l'événement 'mousedown' n'empêchera le menu contextuel sur la plupart des navigateurs (par exemple, cliquez avec le bouton droit de la souris). Vous devez explicitement accrocher l'événement 'contextmenu', s'il est fourni. Voir le guide dont [David parle] (http://stackoverflow.com/questions/3850498/how-to-respond-to-mouse-button-clicks-in-javascript/3850519#3850519) pour plus d'informations. Exemple: http://jsbin.com/anofi3 –

3

le mode Quirks a a decent guide, il est plus compliqué alors il doit être en raison des différences de navigateur.

dois-je utiliser une bibliothèque (de préférence jQuery)?

Les bibliothèques JavaScript ne peuvent pas faire tout ce que vous ne pouvez pas faire vous-même; ils rendent juste plus facile de faire certaines choses.

1

est ici la fonction que j'utilise:

var ieButtons = { "1": "left", "2": "right", "3": "leftright", "4": "middle" }; 

function getMouseButton(evt) { 
    if (typeof evt.which == "number") { 
     // Non-IE case. Works in everything apart from Opera < 8 
     return (evt.which < 2) ? "left" : 
      ((evt.which == 2) ? "middle" : "right"); 
    } else { 
     // IE case 
     return ieButtons[evt.button] || "unknown"; 
    } 
} 

document.onmousedown = function(evt) { 
    evt = evt || window.event; 
    window.alert(getMouseButton(evt)); 
}; 

article de Jan Wolter sur les événements de la souris est apparemment moins bien connu que son seul sur les événements clés, mais est tout aussi bon, et frappe Quirksmode dans un bicorne: http://unixpapa.com/js/mouse.html Ayant juste regardé le code jQuery, il semble normaliser la propriété which de l'événement correctement (1 pour la gauche, 2 pour le milieu, 3 pour le droit), bien que sans la fonctionnalité intéressante d'IE de rapporter plusieurs presses de boutons simultanés .

-1

de MSDN: onclick event de MSDN: button property

+0

Cela est spécifique à Microsoft. Les trois réponses précédentes ont déjà pointé vers des solutions multi-navigateur. – Quentin

+0

vous avez raison, c'est à partir du site Web de Microsoft, je l'ai mentionné avec "de MSDN" phrase. J'ai pensé que ça pourrait peut-être l'aider (même un peu). – syntaxcheck

Questions connexes