2013-02-17 13 views
17

मैं मूसहेल इवेंट के लिए स्वच्छ और अच्छी जावास्क्रिप्ट रखना चाहता हूं, बिना किसी जेएस फ्रेमवर्क के अप्रचलित संस्करणों के लिए विरासत कोड के बिना सामान्य ब्राउज़र के नवीनतम संस्करण का समर्थन करना चाहता हूं।आधुनिक ब्राउज़रों में मूसहेल इवेंट

मूसहेल घटना अच्छी तरह से here समझाया गया है। ब्राउज़र के मौजूदा नवीनतम संस्करणों के लिए इसे सरल कैसे बनाएं?

मेरे पास इसका परीक्षण करने के लिए सभी ब्राउज़रों तक पहुंच नहीं है, इसलिए caniuse.com मेरे लिए एक बड़ी मदद है। हां, मूसहेल का उल्लेख नहीं किया गया है।

डेरेक की टिप्पणी के आधार पर, मैंने यह समाधान लिखा था। क्या यह सभी ब्राउज़रों के लिए मान्य है?

someObject.addEventListener("onwheel" in document ? "wheel" : "mousewheel", function(e) { 
    e.wheel = e.deltaY ? -e.deltaY : e.wheelDelta/40; 
    // custom code 
}); 
+2

क्रोम और IE समर्थन [ 'MouseWheelEvent'] (https://developer.mozilla.org/en-US/docs/DOM/MouseWheelEvent) है, जबकि फ़ायरफ़ॉक्स का समर्थन करता है [' WheelEvent'] (https: // developer.mozilla.org/en-US/docs/DOM/WheelEvent)। ब्राउज़र भर में सुनने के लिए, [यहां] देखें (https://developer.mozilla.org/en-US/docs/Mozilla_event_reference/wheel#Listening_to_this_event_across_browser)। –

+0

* "क्या यह सभी ब्राउज़रों के लिए मान्य है?" *। क्या आप इसे स्वयं परीक्षण नहीं कर सकते? –

+1

डेरेक के बिंदु में जोड़ा गया। इन मामलों पर आपको वास्तव में ब्राउज़र अनुकूलताओं का मूल्यांकन करना चाहिए। आप मॉडर्निजर (http://www.modernizr.com) के साथ ऐसा कर सकते हैं। यह आपके जीवन को बहुत आसान बना देगा :) –

उत्तर

25

यहाँ एक लेख है कि इस का वर्णन करता है, और एक उदाहरण देता है:

http://www.sitepoint.com/html5-javascript-mouse-wheel/

प्रासंगिक कोड, शून्य से विशिष्ट उदाहरण एक छवि का आकार बदलने की दी गई:

var myitem = document.getElementById("myItem"); 
if (myitem.addEventListener) 
{ 
    // IE9, Chrome, Safari, Opera 
    myitem.addEventListener("mousewheel", MouseWheelHandler, false); 
    // Firefox 
    myitem.addEventListener("DOMMouseScroll", MouseWheelHandler, false); 
} 
// IE 6/7/8 
else 
{ 
    myitem.attachEvent("onmousewheel", MouseWheelHandler); 
} 

function MouseWheelHandler(e) 
{ 
    // cross-browser wheel delta 
    var e = window.event || e; // old IE support 
    var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail))); 

    return false; 
} 
+1

उत्कृष्ट जवाब। अधिक ध्यान देने की जरूरत है। इस मुद्दे पर कई अपूर्ण जवाब, – Terrance00

1

माउसव्हील घटना गैर-मानक है, और MDN recommendwheel event है।

var item = document.getElementById('item') 
item.addEventListener('mousewheel', function(e) { 
    console.log('event', e) 
}, false) 
संबंधित मुद्दे