jQuery: اكتشف ما إذا تم النقر على زر الماوس الأوسط أو الأيمن ، إذا كان الأمر كذلك ، افعل ذلك:

StackOverflow https://stackoverflow.com/questions/4007482

سؤال

تحقق من JSfiddle الخاص بي العرض التوضيحي, ، لو e.which == 1 ثم عندما تركت انقر فوق H2 سوفe.which == 2 أو e.which == 3 ثم لن يعمل. 2 هو زر الماوس الأوسط ، و 3 هو زر الماوس الأيمن. لقد وجدت هذا أيضًا:

يوفر jQuery سمة E. whatich ، والعودة 1 ، 2 ، 3 للرسائل اليسرى والمتوسطة واليمين على التوالي. لذلك يمكنك أيضًا استخدام IF ( }

هذا الرمز لا يعمل:

الشفرة:

    $("h2").live('click', function(e) { 
   if( e.which == 2 ) {
      e.preventDefault();
      alert("middle button"); 
   }
});
هل كانت مفيدة؟

المحلول

قد ترغب في فخ حدث Mousedown ، وتحتاج أيضًا إلى منع حدث OnContextMenu لإيقاف قائمة السياق من الخروج أثناء حدث النقر الأيمن.

$("h2").live('mousedown', function(e) { 
   if( (e.which == 1) ) {
     alert("left button");
   }if( (e.which == 3) ) {
     alert("right button");
   }else if( (e.which == 2) ) {
      alert("middle button"); 
   }
   e.preventDefault();
}).live('contextmenu', function(e){
   e.preventDefault();
});

نصائح أخرى

لقد لاحظت بعض الشذوذ في الماضي باستخدام حدث النقر لأي شيء سوى النقر اليسرى العادي. لا أتذكر التفاصيل ، ولكن إذا قمت بتغيير "انقر" إلى "Mousedown" أو "Mouseup" ، فيجب أن يكون لديك نتائج أفضل.

الآن button لقد تعثرت أبعد من كل الاعتراف. وفقًا لـ W3C ، يجب أن تكون قيمها:

  • زر اليسار - 0
  • زر الأوسط - 1
  • الزر الأيمن - 2

وفقًا لـ Microsoft ، يجب أن تكون قيمها:

  • زر اليسار - 1
  • زر الأوسط - 4
  • الزر الأيمن - 2

لا شك أن نموذج Microsoft أفضل من W3C. 0 يجب أن يعني "لا زر مضغوط" ، أي شيء آخر غير منطقي.

من عند http://www.quirksmode.org/js/events_properties.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top