1 line
2.5 KiB
JavaScript
1 line
2.5 KiB
JavaScript
!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(u){var r,f,e=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],t="onwheel"in document||9<=document.documentMode?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],d=Array.prototype.slice;if(u.event.fixHooks)for(var n=e.length;n;)u.event.fixHooks[e[--n]]=u.event.mouseHooks;var c=u.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var e=t.length;e;)this.addEventListener(t[--e],i,!1);else this.onmousewheel=i;u.data(this,"mousewheel-line-height",c.getLineHeight(this)),u.data(this,"mousewheel-page-height",c.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var e=t.length;e;)this.removeEventListener(t[--e],i,!1);else this.onmousewheel=null;u.removeData(this,"mousewheel-line-height"),u.removeData(this,"mousewheel-page-height")},getLineHeight:function(e){var e=u(e),t=e["offsetParent"in u.fn?"offsetParent":"parent"]();return t.length||(t=u("body")),parseInt(t.css("fontSize"),10)||parseInt(e.css("fontSize"),10)||16},getPageHeight:function(e){return u(e).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};function i(e){var t,n=e||window.event,i=d.call(arguments,1),o=0,l=0,s=0,h=0,a=0;if((e=u.event.fix(n)).type="mousewheel","detail"in n&&(s=-1*n.detail),"wheelDelta"in n&&(s=n.wheelDelta),"wheelDeltaY"in n&&(s=n.wheelDeltaY),"wheelDeltaX"in n&&(l=-1*n.wheelDeltaX),"axis"in n&&n.axis===n.HORIZONTAL_AXIS&&(l=-1*s,s=0),o=0===s?l:s,"deltaY"in n&&(o=s=-1*n.deltaY),"deltaX"in n&&(l=n.deltaX,0===s&&(o=-1*l)),0!==s||0!==l)return 1===n.deltaMode?(o*=t=u.data(this,"mousewheel-line-height"),s*=t,l*=t):2===n.deltaMode&&(o*=t=u.data(this,"mousewheel-page-height"),s*=t,l*=t),t=Math.max(Math.abs(s),Math.abs(l)),(!f||t<f)&&g(n,f=t)&&(f/=40),g(n,t)&&(o/=40,l/=40,s/=40),o=Math[1<=o?"floor":"ceil"](o/f),l=Math[1<=l?"floor":"ceil"](l/f),s=Math[1<=s?"floor":"ceil"](s/f),c.settings.normalizeOffset&&this.getBoundingClientRect&&(n=this.getBoundingClientRect(),h=e.clientX-n.left,a=e.clientY-n.top),e.deltaX=l,e.deltaY=s,e.deltaFactor=f,e.offsetX=h,e.offsetY=a,e.deltaMode=0,i.unshift(e,o,l,s),r&&clearTimeout(r),r=setTimeout(m,200),(u.event.dispatch||u.event.handle).apply(this,i)}function m(){f=null}function g(e,t){return c.settings.adjustOldDeltas&&"mousewheel"===e.type&&t%120==0}u.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})}); |