javascript - 检测点击窗口滚动条

标签 javascript

我试图在滚动表格时暂停主窗口滚动,我已经这样做了,但之后再次启用主窗口滚动时遇到了问题。

此函数将在滚动表格时暂停主窗口滚动。

function preventWindowScroll() {

  scrollTable = document.querySelector(".members-data");

  if (scrollTable.contains(event.target)) {

var oldScrollPos = document.body.scrollTop;

window.onscroll = function () { window.scrollTo(0, oldScrollPos); };

  } else {
   // disable scrollTo in order to reenable main window pause
    window.onscroll = function () {};
  }
}

问题是,如果我尝试通过单击并拖动主窗口滚动条来向下滚动,它仍然会被 scrollTo 卡住。 我试过执行 onclick 事件,但在单击滚动条时它不起作用。

  document.body.onclick = function(e) {

  scrollTable = document.querySelector(".members-data");

  if (!scrollTable.contains(e.target)) {
   window.onscroll = function () {};
  }
};

我也试过删除事件监听器,但不知道该放在哪里。

 document.body.removeEventListener('mousewheel', preventWindowScroll);
 document.body.removeEventListener('DOMMouseScroll', preventWindowScroll);

如果我能够检测到用户何时单击主窗口滚动,它就会按预期工作。

注意:我已经通过其他方式实现了暂停主窗口滚动,但它们都有轻微的缺点。

谢谢

最佳答案

我使用这个代码。适用于 Chrome。

yourTable.addEventListener('wheel', handleMouseScroll);

function handleMouseScroll(e) {

  var delta = e.deltaY || e.detail || e.wheelDelta;

  if (delta < 0 && this.scrollTop == 0) {
    e.preventDefault();
  }
  if (delta > 0 && this.scrollHeight - this.clientHeight - this.scrollTop <= 1) {
    e.preventDefault();
  }
}

关于javascript - 检测点击窗口滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43718408/

相关文章:

javascript - 按比例缩放网站以适应浏览器窗口

javascript - 左右箭头键的按键代码是什么?

javascript - jQuery:单击 native 音频元素

javascript - 即使未选中,复选框也会返回 true

javascript - 使克隆的 png 可拖动 Jquery

javascript - 不用jquery的动画,左右滑动

javascript - 如果图像具有类,则添加类

javascript - 将数组作为参数从 JavaScript 中的 ajax 调用传递给 Controller

javascript - 单击 HTML 按钮更改 CSS?

javascript - 选择选项卡时,显示下一个选项卡。如果选择最后一个选项卡,则显示第一个选项卡( polymer 纸选项卡+滚动 spy )