浅论html如何取消滚动事件

做web开发尤其是移动端web开发时,经常会有窗口叠加的需求,而新窗口有时内容较长,也出现了滚动条,一旦上层窗口滚动到底或头,继续滚动时就会触发下层窗口的滚动,但我们需求一般是只想让上层窗口滚动,所以就想要在内容触底或触顶时解除默认滚动事件。然而浏览器的滚动事件是无法被移除的(还有onload、onerror等也无法移除),因为这些事件都是发生之后才开始接收用户操作,所以我们是无法通过preventDefault来阻止这些事件的,那如何通过间接的方式呢?那就是,提前禁止滚轮滚动、键盘上下键的默认事件,这样浏览器就不会响应它们的动作,自然就不会触发滚动了。
代码示例:

// 移动端,阻止触摸开始的默认事件即可,最好不要直接绑定body,
// 选择绑定滑动触摸区域的DOM,以避免影响其他元素的事件
document.getElementById('xxx').addEventListener('touchstart', function(event){
    event.presentDefault();
})

// pc端,通常这种情况都是鼠标滚轮操作(键盘操作的较少,选择性支持),
// 所以阻止滚轮默认事件即可
document.getElementById('xxx').addEventListener('mousewheel', function(event){
    event.presentDefault();
})

猜你喜欢

转载自blog.csdn.net/qq_39300332/article/details/79983656