如何禁用滚动文档正文?

时间:2010-03-18 11:50:40

标签: javascript html ajax xhtml

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

我试过了:

  • document.body.scroll = "no",它无法与FF和Chrome一起使用。
  • document.style.overflow = "hidden";之后,我仍然可以滚动,整个iframe会向上滚动,显示父HTML。

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

有什么想法吗?

6 个答案:

答案 0 :(得分:29)

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

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

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

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

或在iframe的代码中设置scrolling="no"属性:<iframe src="some_url" scrolling="no">

答案 1 :(得分:8)

用css

body,html{
  overflow:hidden
}

答案 2 :(得分:5)

以下JavaScript可以使用:

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

禁用滚动使用:

page.classList.add('noscroll');

启用滚动使用:

page.classList.remove('noscroll');

在CSS文件中,添加:

.noscroll {
    position: fixed!important
}

答案 3 :(得分:2)

添加此css

body.disable-scroll {
    overflow: hidden;
}

以及何时禁用运行此代码

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

以及何时启用此代码

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

答案 4 :(得分:0)

我知道这是一个古老的问题,但我只是以为自己会考虑一下。

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

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


与身体上的overflow: hidden;相比,它更受欢迎的原因是,隐藏的隐藏内容会变得令人讨厌,因为某些事情可能会像这样添加overflow: hidden;

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

但是,当打开的导航应将类添加到body标签(例如<body class="body__nav-open">)时,就会出现问题。然后,使用overflow: hidden; !important和各种废话变成一场大拉锯战。

答案 5 :(得分:-2)

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