Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const WHEEL_EVENT_INTERVAL = 30
- const WHEEL_EVENT_FRACTION = 4
- const WHEEL_EVENT_OFFSET = 10
- export const preventParentScroll = element => {
- const wheelHandler = event => {
- const e = event || window.event
- let deltaX = e.deltaX * -WHEEL_EVENT_INTERVAL || e.wheelDeltaX / WHEEL_EVENT_FRACTION || 0
- let deltaY = e.deltaY * -WHEEL_EVENT_INTERVAL || e.wheelDeltaY / WHEEL_EVENT_FRACTION || (e.wheelDeltaY === undefined && e.wheelDelta / WHEEL_EVENT_FRACTION) || e.detail * WHEEL_EVENT_OFFSET || 0
- if (isMacWebkit) {
- deltaX /= WHEEL_EVENT_INTERVAL
- deltaY /= WHEEL_EVENT_INTERVAL
- }
- e.currentTarget.scrollTop -= deltaY
- if (isFirefox && e.type !== 'DOMMouseScroll') {
- element.removeEventListener('DOMMouseScroll', wheelHandler, false)
- }
- if (e.preventDefault) {
- e.preventDefault()
- }
- if (e.stopPropagation) {
- e.stopPropagation()
- }
- e.cancelBubble = true
- e.returnValue = false
- return false
- }
- const isMacWebkit = (
- navigator.userAgent.indexOf('Macintosh') !== -1
- && navigator.userAgent.indexOf('WebKit') !== -1
- )
- const isFirefox = (
- navigator.userAgent.indexOf('firefox') !== -1
- )
- element.onwheel = wheelHandler
- element.onmousewheel = wheelHandler
- if (isFirefox) {
- element.scrollTop = 0
- element.addEventListener('DOMMouseScroll', wheelHandler, false)
- }
- }
Add Comment
Please, Sign In to add comment