【问题标题】:2 Scrollbars visible when I open a modal dialog2 当我打开模式对话框时可见滚动条
【发布时间】:2015-02-26 15:26:21
【问题描述】:

我们有一个莫名其妙的问题,当我们尝试从父页面打开一个模式对话框时,它打开时有 2 个彼此相邻的垂直滚动条。一个控制模态框,另一个控制它后面的主页。

拥有 2 个滚动条并不理想,并已尝试为此实施解决方案。 我们在对话框页面中添加了一些 javascript,将样式设置为溢出:在模式对话框打开时隐藏。

<script>
function myOnLoad() {
    window.parent.$('body').css('overflow', 'hidden');
}

并使用....

<body onload="myOnLoad()">

这有效并有效地删除了它后面页面中的滚动条(即它应该做的)但是我们还想在模式对话框关闭时将溢出设置回“自动”......

我们通过添加这段代码来做到这一点..

<script type="text/javascript">
// close Modal
$("#close").click(function () {
window.parent.$('body').css('overflow', 'auto');
window.parent.$("iframe").attr('src', '');
window.parent.$(".modalDialog").removeClass('show');
});

但是,当模式对话框关闭时,这似乎不起作用,但滚动条仍隐藏在主页上。 谁能告诉我我在这里可能做错了什么?我尝试了不同的溢出属性,但似乎没有任何效果

【问题讨论】:

  • “当我们尝试从父页面打开模式对话框”,这是什么意思?为什么window.parent 的所有复杂性?
  • 模式在同一个窗口中。弹出窗口在另一个窗口中。您使用的是模式还是弹出窗口?

标签: javascript jquery html css modal-dialog


【解决方案1】:

好的,试试这个,我认为你的页面在点击时会重新加载,从而执行你的 onload:

$("#close").click(function (e) {
e.preventDefault();
window.parent.$('body').css('overflow', 'auto');
window.parent.$("iframe").attr('src', '');
window.parent.$(".modalDialog").removeClass('show');
});

【讨论】:

  • 非常感谢!这行得通。是的,它似乎确实在点击时重新加载页面
  • @Chris 没问题。如果有用,请不要忘记投票并接受答案。
【解决方案2】:

我认为使用 window.parent 可能是问题,因为这指的是 iframe 的父级已经消失了。或类似的东西。只使用jquery

您可以尝试直接获取正文 $("body"),假设您正在触发该点击功能。

编辑:我看到上面已经提到了这一点

【讨论】:

    【解决方案3】:

    将样式添加到正文

    body
    {
         padding-right:0px !important;
         overflow-y:hidden !important;
    }
    

    【讨论】:

    • 您能否详细说明您的答案,添加更多关于您提供的解决方案的描述?
    猜你喜欢
    • 2017-01-05
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    相关资源
    最近更新 更多