Created
          May 10, 2020 17:48 
        
      - 
      
- 
        Save gabrieliuga/bebd6520a94bd3b02017e38b47f85350 to your computer and use it in GitHub Desktop. 
Revisions
- 
        gabrieliuga created this gist May 10, 2020 .There are no files selected for viewingThis file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,61 @@ export default class Scroll { keys = { 32: 1, //spacebar 33: 1, //pageup 34: 1, //pagedown 35: 1, //end 36: 1, //home 37: 1, //left 38: 1, //up 39: 1, //right 40: 1 //down }; supportsPassive = false; wheelOpt = false; wheelEvent = 'mousewheel'; constructor() { try { window.addEventListener("test", null, Object.defineProperty({}, 'passive', { get: () => { this.supportsPassive = true; } })); } catch (e) { } this.wheelOpt = this.supportsPassive ? {passive: false} : false; this.wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel'; } preventDefault(e) { e = e || window.event; if (e.preventDefault) e.preventDefault(); e.returnValue = false; } preventDefaultForScrollKeys(e) { try { if (this.keys[e.keyCode]) { this.preventDefault(e); return false; } } catch (e) { } } disableScroll() { window.addEventListener('DOMMouseScroll', this.preventDefault, false); // older FF window.addEventListener(this.wheelEvent, this.preventDefault, this.wheelOpt); // modern desktop window.addEventListener('touchmove', this.preventDefault, this.wheelOpt); // mobile window.addEventListener('keydown', this.preventDefaultForScrollKeys, false); } enableScroll() { window.removeEventListener('DOMMouseScroll', this.preventDefault, false); window.removeEventListener(this.wheelEvent, this.preventDefault, this.wheelOpt); window.removeEventListener('touchmove', this.preventDefault, this.wheelOpt); window.removeEventListener('keydown', this.preventDefaultForScrollKeys, false); } }