如何禁用滚动文档正文?

问题描述 投票:21回答:6

我有一个包含大量内容的HTML,并且只要加载HTML就会出现垂直滚动条。现在从这个HTML加载全屏IFRAME。问题是当加载IFRAME时,父滚动条仍然存在,我想在加载Iframe时禁用滚动条。

我试过了:

  • document.body.scroll = "no",它不适用于FF和铬。
  • document.style.overflow = "hidden";之后,我仍然可以滚动,整个iframe将向上滚动显示父HTML。

我的要求是,当加载IFRAME时,如果父HTML有一个滚动条,我们就永远不能滚动整个IFRAME。

有任何想法吗?

javascript html ajax xhtml
6个回答
30
投票

如果你想使用iframe的滚动条而不是父亲的滚动条,请使用:

document.body.style.overflow = 'hidden';

如果你想使用父母的滚动条而不是iframe,那么你需要使用:

document.getElementById('your_iframes_id').scrolling = 'no';

或者在iframe的标签中设置scrolling="no"属性:<iframe src="some_url" scrolling="no">


9
投票

用css

body,html{
  overflow:hidden
}

5
投票

以下JavaScript可以工作:

var page = $doc.getElementsByTagName('body')[0];

要禁用滚动使用:

page.classList.add('noscroll');

要启用滚动使用:

page.classList.remove('noscroll');

在CSS文件中,添加:

.noscroll {
    position: fixed!important
}

2
投票

添加此CSS

body.disable-scroll {
    overflow: hidden;
}

以及何时禁用运行此代码

$("body").addClass("disable-scroll");

何时启用运行此代码

$("body").removeClass("disable-scroll")

0
投票

我知道这是一个古老的问题,但我只是觉得我很重要。

我正在使用disableScroll。简单,它就像在梦中一样。

我在禁用身体上的滚动方面遇到了一些麻烦,但允许它在子元素上(如模态或侧边栏)。看起来可以使用disableScroll.on([element], [options]);完成某些事情,但我还没有完成这项工作。


overflow: hidden;相比,这是优先考虑的原因是溢出隐藏可能会变得讨厌,因为有些事情可能会像这样添加overflow: hidden;

...这对预加载器很有用,因为它在CSS加载完成之前呈现。

但是当开放式导航应该向body-tag(如<body class="body__nav-open">)添加一个类时,它会产生问题。然后它变成了与overflow: hidden; !important和各种废话的一场大拔河比赛。


-2
投票

答案:document.body.scroll ='不';

© www.soinside.com 2019 - 2024. All rights reserved.