كيف يمكنني الحصول على عميل وعميل للعمل داخل معالج الأحداث "السحب" على فايرفوكس؟

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

سؤال

يبدو أن Mozilla Firefox 3.x لديه خطأ عند الاستماع إلى حدث "OnDrag". لا يبلغ كائن الحدث عن موضع الكائن الذي يتم سحبه، ويتم تعيين جميع إزاحة العملاء والعملية وغيرها من إزعال الشاشة على الصفر. هذه مشكلة تماما كما أردت إجراء عنصر وكيل بناء على العنصر الذي يتم سحبه واستخدامه بالطبع والعميل والعميل لضبط موقعه.

أعلم أن هناك أشياء رائعة حولها مثل SETDRAGIMAGIMAGE في HTML5 ولكني أريد توفير تجريد عام ل DD الأصلي بين المتصفحات.

رمز خلل:

document.addEventListener('drag', function(e) {
    console.log(e.clientX); // always Zero
}, false);

ملاحظة: لا تحدث هذه المشكلة على الأحداث الأخرى (DragStart، Dragover) ويمكن التقاط أحداث Mousemove أثناء سحب Somethin ".

الرجاء المساعدة!

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

المحلول

لقد وجدت حلا، لقد وضعت مستمعا في حدث "Dragover" على مستوى المستند، الآن أحصل على خصائص X و Y اليمين التي يمكنني تعريضها من خلال كائن مشترك عالميا.

نصائح أخرى

حدث السحب في HTML 5 غير وظيفي بالكامل في متصفحات اليوم. لمحاكاة موقف إسقاط السحب N يجب عليك استخدامه:

  1. إضافة حدث OnMousedown، وضع VAR صحيح.
  2. إضافة حدث onmouseup، إعداد هذا var false.
  3. أضف حدث OnMousemove، والتحقق من ذلك صحيحا، وإذا كان ذلك، فقم بنقل Div وفقا للإحداثيات.

هذا دائما عملت بالنسبة لي. إذا واجهت أي مشاكل، فتلمس مرة أخرى، يمكنني تقديم بعض الأمثلة.

حظا طيبا وفقك الله!

أعلم أن هناك أشياء رائعة حولها مثل SETDRAGIMAGIMAGE في HTML5 ولكني أريد توفير تجريد عام ل DD الأصلي بين المتصفحات.

ولكن لماذا لا يوجد شيء مثل هذا، لا توجد مكتبات jQuery. & النموذج المبدئي متوفر للمتصفح عبر السحب والإفلات؟

وإلا إذا كنت ترغب في تنفيذ مكتبة DD الخاصة بك، يمكنك الاستفادة من أساليبها أو تمديدها، حيث أن كلتا المكتبات تتبع نموذجا موجزا للكائنات.

هذا سوف يوفر الكثير من الوقت.

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