javascript - 如何使用 Javascript 启用/禁用鼠标滚动

标签 javascript

我一直在尝试使用 javascript 启用/禁用滚动,

我设法禁用了滚动,但未能将其恢复到工作状态,

所以我试过的是:

 function noscroll() {
    window.scrollTo(0, 0);
}

然后我尝试使用以下代码行添加和删除滚动

 window.removeEventListener("scroll", noscroll);

 window.addEventListener("scroll", noscroll);

非常感谢任何帮助

最佳答案

您的方法似乎有效,如下所示:

function noscroll() {
  window.scrollTo(0, 0);
}

document.getElementById('enable').addEventListener('click', () => {
  window.removeEventListener("scroll", noscroll);
});
 
document.getElementById('disable').addEventListener('click', () => {
  window.addEventListener("scroll", noscroll);  
});
div {
  background:pink;
  height:1000px;
  padding:50px;
}

header {
  position:fixed;
  top:0;
  left:0;
  z-index:1;
}
<header>
<button id="enable">Enable scrolling</button>
<button id="disable">Disable scrolling</button>
</header>
<div>
Prevent scroll via Javascript (window.scrollTo)
</div>

另一种值得考虑的方法是通过“隐藏”任何内容溢出来更新 document.body 元素的 overflow 属性。这具有删除滚动条的副作用,这反过来会阻止滚动:

 document.getElementById('enable').addEventListener('click', () => {

    // Remove overflow value from document body to restore default scrolling
    document.body.style.overflow = '';
 })

 document.getElementById('disable').addEventListener('click', () => {
    // When scrolling is disabled, auto scroll to top of screen
    window.scrollTo(0, 0);

    // Apply overflow:hidden to document body to prevent scrolling
    document.body.style.overflow = 'hidden';
 })
div {
  background:pink;
  height:1000px;
  padding:50px;
}

header {
  position:fixed;
  top:0;
  left:0;
  z-index:1;
}
<header>
<button id="enable">Enable scrolling</button>
<button id="disable">Disable scrolling</button>
</header>
<div>
Prevent scroll via CSS
</div>

上面显示的基于 CSS 的方法的主要优点是它不受“抖动”滚动行为的影响,而这种行为在以前的“纯 javascript”方法中很明显。

关于javascript - 如何使用 Javascript 启用/禁用鼠标滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53489152/

相关文章:

javascript - ReactJS:如何在页面加载上设置默认 api 数据?

php - 使用复选框打开和关闭颜色 div

javascript - 具有两组不同属性的 Handlebars 。 helper 还是部分?

javascript - 如果 JavaScript 中 if block 返回,还需要 else 吗?

javascript - Kendo 自动完成默认值

javascript - 插件 Jquery Validation 的错误信息没有正确显示

php - 禁用 javascript 时根据 javascript 验证保护表单的最佳方法

javascript Filter数组在特定出现处具有重复元素

javascript - 解析模板字符串

javascript - Canvas 中的真实鼠标位置