Created
March 8, 2021 08:00
-
-
Save ivo-ivanov/b8cb0a46ee40350eb6a975b4696c6555 to your computer and use it in GitHub Desktop.
Temporally disable scroll #js
This file contains 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 characters
// left: 37, up: 38, right: 39, down: 40, | |
// spacebar: 32, pageup: 33, pagedown: 34, end: 35, home: 36 | |
var keys = {37: 1, 38: 1, 39: 1, 40: 1}; | |
function preventDefault(e) { | |
e.preventDefault(); | |
} | |
function preventDefaultForScrollKeys(e) { | |
if (keys[e.keyCode]) { | |
preventDefault(e); | |
return false; | |
} | |
} | |
// modern Chrome requires { passive: false } when adding event | |
var supportsPassive = false; | |
try { | |
window.addEventListener("test", null, Object.defineProperty({}, 'passive', { | |
get: function () { supportsPassive = true; } | |
})); | |
} catch(e) {} | |
var wheelOpt = supportsPassive ? { passive: false } : false; | |
var wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel'; | |
// call this to Disable | |
function disableScroll() { | |
window.addEventListener('DOMMouseScroll', preventDefault, false); // older FF | |
window.addEventListener(wheelEvent, preventDefault, wheelOpt); // modern desktop | |
window.addEventListener('touchmove', preventDefault, wheelOpt); // mobile | |
window.addEventListener('keydown', preventDefaultForScrollKeys, false); | |
} | |
// call this to Enable | |
function enableScroll() { | |
window.removeEventListener('DOMMouseScroll', preventDefault, false); | |
window.removeEventListener(wheelEvent, preventDefault, wheelOpt); | |
window.removeEventListener('touchmove', preventDefault, wheelOpt); | |
window.removeEventListener('keydown', preventDefaultForScrollKeys, false); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment