


How Can I Temporarily Disable Scrolling in JavaScript for a Better User Experience?
Dec 23, 2024 pm 10:54 PMDisable Scrolling Temporarily in Javascript for a Seamless User Experience
Temporary suspension of scrolling can enhance the user experience when working with animations, such as the jQuery scrollTo plugin. While disabling scrolling entirely may seem like a straightforward solution, maintaining the visibility of the scrollbar while preventing interaction offers a more elegant approach.
To achieve this, we will focus on canceling interaction events associated with both mouse and touch scrolling, including keyboard buttons.
[Working Demo]
// Event Codes for Navigation Keys var keys = {37: 1, 38: 1, 39: 1, 40: 1}; // Prevent Default Scrolling function preventDefault(e) { e.preventDefault(); } // Cancel Scrolling for Navigation Keys function preventDefaultForScrollKeys(e) { if (keys[e.keyCode]) { preventDefault(e); return false; } } // Disable Scrolling function disableScroll() { window.addEventListener('DOMMouseScroll', preventDefault, false); // Firefox window.addEventListener('wheel', preventDefault, false); // Desktop window.addEventListener('touchmove', preventDefault, false); // Mobile window.addEventListener('keydown', preventDefaultForScrollKeys, false); // Keyboard } // Enable Scrolling function enableScroll() { window.removeEventListener('DOMMouseScroll', preventDefault, false); window.removeEventListener('wheel', preventDefault, false); window.removeEventListener('touchmove', preventDefault, false); window.removeEventListener('keydown', preventDefaultForScrollKeys, false); }
By calling disableScroll(), we effectively prevent scrolling while the scrollTo animation is in progress. Once the animation is complete, enableScroll() can be used to restore scrolling functionality.
Update: Enhanced Support
This solution has been updated to work seamlessly on modern mobile browsers and Chrome desktop. Passive listeners are now incorporated to maintain performance and user responsiveness.
The above is the detailed content of How Can I Temporarily Disable Scrolling in JavaScript for a Better User Experience?. For more information, please follow other related articles on the PHP Chinese website!

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Replace String Characters in JavaScript

Custom Google Search API Setup Tutorial

8 Stunning jQuery Page Layout Plugins

Improve Your jQuery Knowledge with the Source Viewer

10 Mobile Cheat Sheets for Mobile Development
