jQuery: اكتشف ما إذا تم النقر على زر الماوس الأوسط أو الأيمن ، إذا كان الأمر كذلك ، افعل ذلك:
-
25-09-2019 - |
سؤال
تحقق من 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 يجب أن يعني "لا زر مضغوط" ، أي شيء آخر غير منطقي.