تلقي (غير المرغوب فيها) الحدث mousemove عند النقر على الصورة

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

سؤال

لدي صفحة html في هذه الصفحة هناك بعض الصور عندما ينقر المستخدم على واحدة من هذه الصور ، صورة مختلفة يحل محله.

<img style="cursor:hand" src="../_Img/click_me.png" onclick="ChangePic();">

على ChangePic (وظيفة):

function ChangePic() {
var el = event.srcElement;
el.src = '../_Img/Clicked.png';}

أود أيضا أن يكون علامة على الصفحة التي ديسباليس الحالية العمل على سبيل المثالنقل/انقر بزر الماوس الأيمن/الأيسر انقر/ انقر نقرا مزدوجا فوق.

في onload من صفحة html ، لدي:

onmousemove="ShowAction('Move');" onmousedown="ShowKeysDown('Left','Middle','Right','click');"

عرض العمل ببساطة بتغيير التسمية.على ShowKeysDown الشيكات التي تم النقر فوق الزر, ثم يدعو ShowAction.(السلاسل في هذا الاتصال على دعم متعدد اللغات)

المشكلة أواجه هو أنه عندما ينقر المستخدم على صورة واحدة الماوس الأيسر انقر فوق الصورة بشكل صحيح تغيير التسمية chaged إلى اليسار انقر على' لجزء من الثانية ، ثم يتغير إلى " نقل " على الرغم من عدم التحرك قد حدثت.اعتقدت أنه قد يكون هذا بنقرة واحدة على صورة تعتبر بداية قم بسحب وإسقاط الإجراء ولكن لست متأكدا.

تحرير:عندما لا يمكن للمستخدم النقر على صورة فقط في بعض عشوائي بيضاء التسمية هو عرض بشكل صحيح كما غادر انقر فوق' حتى تحريك المؤشر ، ثم يتغير إلى "نقل".هذا هو behavour وأود عند النقر على الصور.

شكرا على وقتك.

ملاحظة:وهذا يحتاج فقط إلى العمل في أي كما هو جزء من HTMLDialog في mfc.

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

المحلول

أفترض أن الحدث التالي يحدث من خلال تفاعل المستخدم :

  1. المستخدم بتحريك الماوس فوق الصورة - onmousemove - يعرض " نقل " على التسمية
  2. ينقر المستخدم على صورة (يسار زر نقرة) - onmousedown - diaplsya 'اليسار انقر على التسمية
  3. المستخدم بتحريك الماوس من الصورة - onmousemove - يعرض " نقل " على التسمية

على onmousemove النار حتى المستخدم بتحريك الماوس فقط بكسل في الصورة.

لذلك الحل لمشكلتك ليكون :

  1. وقد عالمي العلم
  2. تعيين في معالج الحدث من onmousedown
  3. تحقق من أن العلم في معالج الحدث من onmousemove, إذا لم يتم تعيين ثم عرض 'نقل' على التسمية إذا تم تعيين ثم لا تفعل أي شيء
  4. وقد حدث hanlder من onmouseout إعادة تعيين العلم في هذا معالج الحدث ، لذلك مرة أخرى كلما onmousemove الحرائق ، وسوف تحقق العلم لأنه لم يتم تعيين من قبل انقر فوق الحدث ، onmousemove سيتم عرض " نقل " على الملصق.

نأمل أن يكون هذا هو ما تريد كما في السلوك !!!

نصائح أخرى

وتصحيح لي إذا كنت مخطئا ... ولكن كنت تستخدم الحدث onmousemove .. أليس سلوك كنت تعاني من الطبيعي تماما؟

ويكاد يكون من المستحيل فوق كائن دون الحصول على الحدث MouseMove ... تحتاج إلى تصفية ذلك بعض الطريق - like- إذا كانت خطوة صغيرة جدا تجاهله ...

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