gpt4 book ai didi

javascript - 检测点击窗口滚动条

转载 作者:行者123 更新时间:2023-11-29 23:46:43 24 4
gpt4 key购买 nike

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

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com