يتم إنتاجه عند استخدامه بالاقتران مع المكوِّن الإضافي jquery-mousewheel.
انظر https://jsfiddle.net/4Lba076o/
في Chrome التمرير على ما يرام.
في Firefox ، يكون الأمر بطيئًا جدًا (1 بكسل).
بشكل أساسي ، لا يستخدم سلوك عجلة الماوس event.deltaFactor (وهو أمر غير قياسي مع ذلك).
في Firefox jquery-mousewheel يحول الحدث من {deltaY: -42} إلى {deltaY: -1، deltaFactor: 42}
كان لدي نفس المشكلة ، ولكن لا علاقة له بعجلة الماوس على ما أعتقد.
لقد وجدت أن Firefox يستخدم deltaMode من 1 ، والذي يتم تمريره لكل سطر. لذا فإن دلتا 3 تعني 3 خطوط بدلاً من البكسل.
لقد اخترقت هذا في selected.jquery.js وجعل التمرير أسرع كثيرًا:
Chosen.prototype.search_results_mousewheel = function(evt) {
/** Added the factor var and set it's value to 16 when scrolling is line scrolling */
var delta, factor;
if (evt.originalEvent) {
factor = evt.originalEvent.deltaMode === 1 /** DOM_DELTA_LINE */ ? 16 : 1;
delta = factor * evt.originalEvent.deltaY || -evt.originalEvent.wheelDelta || evt.originalEvent.detail;
}
if (delta != null) {
evt.preventDefault();
if (evt.type === 'DOMMouseScroll') {
delta = delta * 40;
}
return this.search_results.scrollTop(delta + this.search_results.scrollTop());
}
};
التصحيح الذي اقترحه Storman يعمل بشكل مثالي بالنسبة لنا. هل من المخطط نشره في إصدار مستقبلي؟
storeman هل يمكنك فتح طلب سحب مع الباتش الخاص بك؟
لا أعرف فن القهوة أو كيفية تجميعها / اختبارها بنخر. لقد أجريت إصلاحًا أعتقد أنه يجب أن يعمل ، لكنني غير قادر على اختباره ، لذلك لا أريد إنشاء طلب سحب. يمكن العثور على الإصلاح الخاص بي في القهوة هنا:
https://github.com/tioga-tours/chosen/tree/faster-firefox-scroll
تضمين التغريدة
في الواقع ، له اتصال مباشر بـ jquery mousewheel ، لأنه إذا كان لديك كلا المكونين الإضافيين ، فإن jquery mousewheel يحول أحداث الماوس كما ذكرت. بدون jquery ، يكون سلوك تمرير عجلة الماوس جيدًا في FF.
إذن كيف أصلحت ذلك بدون تعديل كود المصدر لكلا المكونين الإضافيين - أقوم فقط بعمل $ (..). unmousewheel () في أماكن لكل أسجل .chosen () ؛ يمكن للمرء كتابة ملحق بسيط لذلك :)
إذا قمت بإصلاح ذلك بالطريقة التي قمت بها هنا
factor = evt.originalEvent.deltaMode === 1 /** DOM_DELTA_LINE */ ? 16 : 1;
ثم سأغيره إلى
factor = evt.originalEvent.deltaFactor || 1;
التعليق الأكثر فائدة
كان لدي نفس المشكلة ، ولكن لا علاقة له بعجلة الماوس على ما أعتقد.
لقد وجدت أن Firefox يستخدم deltaMode من 1 ، والذي يتم تمريره لكل سطر. لذا فإن دلتا 3 تعني 3 خطوط بدلاً من البكسل.
لقد اخترقت هذا في selected.jquery.js وجعل التمرير أسرع كثيرًا: