هل تريد التقاط نقرات الماوس في DOM باستخدام JQuery؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

خلفية

أنا أستخدم عمليات إرسال نموذج POST بدلاً من الروابط ذات الوسائط المتسلسلة داخل تطبيق الويب، حتى أتمكن من التحكم في الإدخال.

ولسوء الحظ، يعني هذا أن المستخدمين لا يمكنهم استخدام الاختصارات السريعة التي يعرفونها لفتح الروابط في نوافذ جديدة، مثل النقر مع الضغط على مفتاح التحكم أو النقر الأوسط.

مشكلة

لدي ما يبدو أنه طريقة عملية لاستخدام jQuery لالتقاط إدخالات الماوس ومفاتيح الوتر المختلفة، بناءً على مواصفات أحداث الماوس W3C DOM:

 $("span#clickspan").click( function(event) {

   buttonpress = event.button;
   ctrlpress = event.ctrlKey;

    $("#clickresult").empty();
    $("#clickresult").append("<p>Click!</p>");
    $("#clickresult").append("<p>Button # " + buttonpress + " pressed!</p>");
    if (ctrlpress) {
        $("#clickresult").append("<p>Control-click!</p>");
    }

    //form submission code would go here

    event.preventDefault();

    }
 );

يمكنني التقاط نقرات التحكم بهذه الطريقة (تم اختبارها في Firefox 3 وIE7)، وهي تشير بشكل صحيح (؟) إلى أن النقرات اليسرى تأتي من زر الماوس رقم 0، ولكن لسبب ما لا يزال هذا الرمز لا يلتقط النقرات الوسطى على الامتداد، ولا تزال النقرات بزر الماوس الأيمن تظهر في قائمة السياق.أرغب في التقاط النقرات المتوسطة، على الأقل.

هل يمكن لأحد أن يساعد هناك؟

ماذا يعني "السيطرة".

المشكلة في إرسال/رابط GET مع الوسائط المتسلسلة هي أنه يمكن لأي شخص تحرير شريط العناوين وكتابة أي شيء.لقد كنت قلقًا بالفعل بشأن المصادقة والتحقق من جانب الخادم.هذا ليس سبب رغبتي في العمل مع POST.

يجب أن أعرض فقط معلومات مفيدة للمستخدمين.معرفات قاعدة البيانات الداخلية ليست كذلك.يجب أن أسمح للمستخدمين بالتفاعل مع التطبيق بطرق ذات معنى فقط.لا يعد التحرير التعسفي لشريط العناوين واحدًا من تلك الأشياء.

الناس يرتكبون الأخطاء المطبعية في كل وقت.ومع ذلك، من وجهة نظر النظام، لا يوجد فرق بين خطأ مطبعي في شريط العناوين وخلل في منطق التطبيق، وأنا أفضل عدم تحميل مسؤولية تحديد أي خطأ حدث للتو على المستخدمين.

هل كانت مفيدة؟

المحلول

اجابة قصيرة؟لا أستطيع أن أفعل ذلك.

اجابة طويلة؟ أحداث الماوس جافا سكريبت.ما زلت لا تستطيع أن تفعل ذلك.

وهذا يطرح السؤال:هل أنت؟ يحتاج لاستخدام POST أو تفعل ذلك ببساطة يريد ل؟السبب الوحيد الذي يجعلك بحاجة إلى ذلك هو طول سلسلة الاستعلام.أما بالنسبة للرغبة في ذلك، فقد ذكرت "التحكم في إدخال المستخدم".ماذا يعني ذلك بالضبط؟

يجب ألا تعتمد أبدًا على المتصفح للتحقق من صحة الإدخال. يمكنك القيام بذلك هناك كوسيلة راحة ولكن يجب على الخادم دائمًا التحقق من صحة الإدخال.

أم أن السبب جمالي (أي عناوين URL أقصر و"أجمل")؟

أنت تعيد اختراع العجلة التي هي الارتباطات التشعبية.أنا فقط أحاول التأكد من أن لديك سببًا وجيهًا جدًا للقيام بذلك لأنه يؤدي إلى نتائج عكسية ولن تحصل أبدًا على نفس دعم المتصفح والتوافق مثل الارتباطات التشعبية الفعلية.بالإضافة إلى أنك من المحتمل أن تزعج المستخدمين ببساطة من خلال عدم عمل الأشياء التي يتوقعون أن تعمل.ليس جيدا.

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