Guest User

Untitled

a guest
Mar 17th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. const WHEEL_EVENT_INTERVAL = 30
  2. const WHEEL_EVENT_FRACTION = 4
  3. const WHEEL_EVENT_OFFSET = 10
  4.  
  5. export const preventParentScroll = element => {
  6.  
  7. const wheelHandler = event => {
  8. const e = event || window.event
  9.  
  10. let deltaX = e.deltaX * -WHEEL_EVENT_INTERVAL || e.wheelDeltaX / WHEEL_EVENT_FRACTION || 0
  11. 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
  12.  
  13. if (isMacWebkit) {
  14. deltaX /= WHEEL_EVENT_INTERVAL
  15. deltaY /= WHEEL_EVENT_INTERVAL
  16. }
  17.  
  18. e.currentTarget.scrollTop -= deltaY
  19.  
  20. if (isFirefox && e.type !== 'DOMMouseScroll') {
  21. element.removeEventListener('DOMMouseScroll', wheelHandler, false)
  22. }
  23.  
  24. if (e.preventDefault) {
  25. e.preventDefault()
  26. }
  27.  
  28. if (e.stopPropagation) {
  29. e.stopPropagation()
  30. }
  31.  
  32. e.cancelBubble = true
  33. e.returnValue = false
  34. return false
  35. }
  36.  
  37. const isMacWebkit = (
  38. navigator.userAgent.indexOf('Macintosh') !== -1
  39. && navigator.userAgent.indexOf('WebKit') !== -1
  40. )
  41.  
  42. const isFirefox = (
  43. navigator.userAgent.indexOf('firefox') !== -1
  44. )
  45.  
  46. element.onwheel = wheelHandler
  47. element.onmousewheel = wheelHandler
  48.  
  49. if (isFirefox) {
  50. element.scrollTop = 0
  51. element.addEventListener('DOMMouseScroll', wheelHandler, false)
  52. }
  53. }
Add Comment
Please, Sign In to add comment