لقد استخدمت هذا البرنامج المساعد الرائع مع jquery.draggable لتحريك / تكبير الرسم التخطيطي باستخدام عقد قابلة للسحب ،
ولكن بعد أن تصبح العقد الأخيرة لتحديث Chrome غير قابلة للتجزئة.
أظهر تحقيق صغير أن Chrome غيّر شيئًا ما بحدث المؤشر ،
حتى الآن يستجيب المكون الإضافي panzoom لحدث المؤشر للعقدة الفرعية قبل إطلاق حدث mousedown.
يقوم Panzoom بإيقاف حدث المؤشر ولسبب ما لا يوجد حدث الماوس بعد ذلك ، لذلك لا يبدأ السحب.
jquery.panzoom.js v3.2.2
مسج 3.1.0 أو v1.11.3
jqueryui 1.12.0 أو 1.10.3
Chrome 55.0.2883.75 (64 بت) Ubuntu 16.04
هنا عرض
http://codepen.io/yurigor/pen/yVjeGB
أضفت الخيار "ignoreChildrensEvents" لإصلاح هذه المشكلة
لست متأكدًا من وجوب تقديم طلب سحب مع هذه التغييرات.
أواجه نفس المشكلة ، chrome v55. لدي نافذة قابلة للسحب ، وأريد الحصول على أحداث موسعة للأطفال. ماذا فعلت لإصلاح هذا؟ هل لديك فرع مع التغيير ، أنا عالق الآن.
وجدت فرعك وهو يعمل على حل مشكلتي بشكل جيد جدًا. شكرا YuriGor هذا رائع
سررت بالمساعدة!
أي شخص يحتاجها أيضًا ، هنا رابط مباشر:
https://github.com/YuriGor/jquery.panzoom/tree/ignoreChildrensEvents/dist
timmywil ، إذا كنت ترغب في دمج
أبدأ تحميل الكبد
grunt watch:dev
لكنها لا تعمل.
على http: // localhost : 35711 / لدي
{"tinylr":"Welcome","version":"0.2.1"}
وعلى
http: // localhost : 35711 / test / index.html
أو
http: // localhost : 35711 / demo / index.html
أملك
{"error":"not_found","reason":"no such route"}
شكرا جزيلا. لم يكن هذا الإصلاح كافيًا بالنسبة لي ولكني أضفت بعضًا منه لإصلاحه لحالتي. (لدي عدة أطفال متداخلين يجب تجاهل بعضهم والبعض الآخر لا ينبغي)
timmywil هل من الممكن إصدار نسخة جديدة مع هذا الخيار؟
تحرير: في الواقع لدي نفس المشكلة مثل romi45. 😞
تحرير 2: خيار لسرد العناصر التي يجب تجاهلها سيكون مفيدًا ، مثل:
ignoreChildEventsFrom: [".things-to-ignore1", ".things-to-ignore2"]
تحرير 3: أعتقد أنني قد وجدت الحل في الأسئلة الشائعة "كيف يمكنني عمل الروابط إذا كانت ضمن عنصر Panzoom؟".
ما أفعله هو التعليق على منع PreventionDefault في السطر 969. سوف يمنع منع منع التخلف من الوصول إلى الأحداث التابعة له.
akhnaz ،
من وجهة نظري ، سيمنع preventDefault
الإجراء الافتراضي المرتبط بعنصر (طفل أو عنصر panzoom نفسه) ، وسيوقف stopPropagation
الأحداث من الظهور في شكل فقاعات وصولاً إلى العنصر الرئيسي.
يوجد حل بسيط وأنيق في الأسئلة الشائعة:
$('.panzoom a').on('mousedown touchstart', function( e ) {
e.stopImmediatePropagation();
});
هذا لا يتطلب أي تغييرات في المكتبة نفسها.
مرحبًا @ glen-84
نعم ، سوف تمنع PreventionDefault الإجراء الافتراضي. ولكن ، سيمنع أيضًا MouseDown من الطفل عند إرسال المؤشر إلى الأسفل والاستماع إليه.
في chrome 55 ، يتم الآن إرسال المؤشر إلى الأسفل وتقوم Microsoft edge بالفعل بتطبيق المؤشر لأسفل من البداية.
في حالتي ، يتم الاستماع إلى panzoom إلى المؤشر لأسفل ، ويستمع الأطفال إلى MouseDown.
هنا هو jsbin الخاص بي من أجله:
akhnaz ،
يمكنك فقط الاستماع إلى pointerdown
على الطفل وإيقاف التكاثر الفوري ...
https://jsbin.com/sicapuledo/edit؟html ، js ، وحدة التحكم ، الإخراج
أهلا،
لقد قمت بتحسين ميزتك قليلاً. لقد تجاوزت خيارك إلى مجموعة محتملة من الصفوف. الهدف هو تجاهل الأحداث فقط إذا كان لدى الأطفال أحد الصفوف المدرجة. بالطبع ، فقط قم بتعيين القيمة على العمل الحقيقي أثناء تنفيذه.
ليس لدي الوقت حقًا للتفرع بشكل صحيح وتقديم طلب سحب. يرجى تضمين هذا التحسين الصغير وطلب السحب إلى المستودع الرئيسي.
هذا هو الكود المحدث من سطور فورك 959:
if (!options.disablePan || !options.disableZoom) {
events[ str_start ] = function(e) {
if(options.ignoreChildrensEvents) {
if($.isArray(options.ignoreChildrensEvents)) {
if(options.ignoreChildrensEvents.find(function(c){return $(e.target).hasClass(c);})) {
return;
}
}
else if(e.target !== this){
return;
}
}
var touches;
/* rest of code */
يمكن تعريف خيار ignoreChildrensEvents على أنه صحيح أو خطأ أو ['child-class1'، 'child-class2'].
يعتبر
يرجى إصدار إصدار أحدث يحتوي على ignoreChildrensEvents
التعليق الأكثر فائدة
سررت بالمساعدة!
أي شخص يحتاجها أيضًا ، هنا رابط مباشر:
https://github.com/YuriGor/jquery.panzoom/tree/ignoreChildrensEvents/dist
timmywil ، إذا كنت ترغب في دمج
أبدأ تحميل الكبد
grunt watch:dev
لكنها لا تعمل.
على http: // localhost : 35711 / لدي
{"tinylr":"Welcome","version":"0.2.1"}
وعلى
http: // localhost : 35711 / test / index.html
أو
http: // localhost : 35711 / demo / index.html
أملك
{"error":"not_found","reason":"no such route"}