के लिए एक अलग प्रश्न मैं बना क्या यह उत्तर सहित, इस नमूना कोड ।
उस कोड में मैं एक HTML5 कैनवस में ज़ूम इन / आउट करने के लिए माउस व्हील का उपयोग करता हूं। मुझे कुछ कोड मिले जो क्रोम और फ़ायरफ़ॉक्स के बीच गति अंतर को सामान्य करता है। हालाँकि, सफारी में जूम हैंडलिंग बहुत अधिक तेज है।
यहाँ वर्तमान में मेरे पास कोड है:
var handleScroll = function(e){
var delta = e.wheelDelta ? e.wheelDelta/40 : e.detail ? -e.detail/3 : 0;
if (delta) ...
return e.preventDefault() && false;
};
canvas.addEventListener('DOMMouseScroll',handleScroll,false); // For Firefox
canvas.addEventListener('mousewheel',handleScroll,false); // Everyone else
Chrome v10 / 11, Firefox v4, Safari v5, Opera v11 और IE9 में माउस व्हील रोल करने के लिए समान 'डेल्टा' मान प्राप्त करने के लिए मैं किस कोड का उपयोग कर सकता हूं?
यह सवाल संबंधित है, लेकिन इसका कोई अच्छा जवाब नहीं है।
संपादित करें : आगे की जांच से पता चलता है कि एक स्क्रॉल घटना 'अप' है:
| evt.wheelDelta | evt.detail ------------------ + ---------------- + ------------ सफारी v5 / Win7 | 120 | 0 सफ़ारी v5 / OS X | 120 | 0 सफारी v7 / OS X | 12 | 0 क्रोम v11 / Win7 | 120 | 0 क्रोम v37 / Win7 | 120 | 0 क्रोम v11 / OS X | 3 (!) | 0 (संभवतः गलत है) क्रोम v37 / OS X | 120 | 0 IE9 / Win7 | 120 | अपरिभाषित ओपेरा v11 / OS X | 40 | -1 ओपेरा v24 / OS X | 120 | 0 ओपेरा v11 / Win7 | 120 | -3 फ़ायरफ़ॉक्स v4 / Win7 | अपरिभाषित | -3 फ़ायरफ़ॉक्स v4 / OS X | अपरिभाषित | -1 फ़ायरफ़ॉक्स v30 / OS X | अपरिभाषित | -1
इसके अलावा, OS X पर मैकबुक ट्रैकपैड का उपयोग धीरे-धीरे चलते हुए भी अलग परिणाम देता है:
- सफारी और क्रोम पर,
wheelDelta
माउस व्हील के लिए 120 के बजाय 3 का मूल्य है। - फ़ायरफ़ॉक्स पर
detail
आम तौर पर2
, कभी-कभी होता है1
, लेकिन जब बहुत धीरे-धीरे कोई ईवेंट हेंलर पर स्क्रॉल करता है तो सभी पर ।
तो सवाल यह है:
इस व्यवहार को अलग करने का सबसे अच्छा तरीका क्या है (आदर्श रूप से किसी भी उपयोगकर्ता एजेंट या ओएस सूँघने के बिना)?
e.wheelDelta/120
?