javascript - 如何取消对话框中的自定义 window.onscroll 函数,恢复正常行为?

标签 javascript jquery scroll

我正在使用下面的函数在 jqueryui.dialog() 期间廉价地禁用滚动。但是,对话框关闭后,如何将其反转回正常滚动行为?

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

最佳答案

您可以使用 css Overflow:hidden 来删除窗口的滚动,然后使用 Overflow:initial 将其恢复正常,而不是使用 onscroll 事件

//Before displaying your dialog
jQuery('html').css({overflow:"hidden"});

//After closing the dialog
jQuery('html').css({overflow:"initial"});

如果您想坚持使用 onscroll 事件,只需保存对当前 onscroll 的引用,然后在完成后将其设置回来

var scrollRef;

//Before displaying your dialog
scrollRef = window.onscroll;
window.onscroll = function () { window.scrollTo(0, 0); };

//After closing your dialog
window.onscroll = scrollRef;

关于javascript - 如何取消对话框中的自定义 window.onscroll 函数,恢复正常行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27612818/

相关文章:

javascript - Google Maps v3 中使用 DirectionsRenderer 的目的地值

javascript - 从 Swift 4 向 Node.js 发送发布请求

javascript - 如何使用 IntersectionObserver 使 React 组件在滚动时淡入,但只有一次?

javascript - 为什么是!!在检查对象是否为真时更可取?

javascript - PrototypeJS 获取每个输入的值

javascript - Bootstrap : Tab doesn't show content correctly

javascript - Twitter Bootstrap 中的数据切换属性

javascript - 如何在事件 Dragover 或 Dragenter 中从 DataTransfer.getData 获取数据

java - 没有灰色区域的可滚动 JPanel

html - 如何在 textarea 的 i-os 设备中显示垂直滚动条?