如何禁用滚动文档正文?

问题描述:

我有一个有很多内容的HTML,并且一旦加载HTML就会出现一个垂直滚动条。现在从这个HTML全屏幕IFRAME被加载。问题是当IFRAME加载时,父滚动条仍然存在,我想在加载Iframe时禁用滚动条。如何禁用滚动文档正文?

我想:

  • document.body.scroll = "no",它没有与FF和铬工作。
  • document.style.overflow = "hidden";之后我仍然能够滚动,并且整个iframe会向上滚动显示父HTML。

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

任何想法?

如果你想使用iframe的滚动条,而不是父母的利用这一点:

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

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

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

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

+0

除了请在样式表中而不是在Javascript中执行此操作:-) – Pointy 2010-03-18 12:26:01

+0

同意。好点子。 – ntownsend 2010-03-19 12:47:13

+0

感谢您的投入。我做错了,它按照解释的方式工作。 – Manohar 2010-03-22 04:10:24

下面的JavaScript可以工作:

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

要禁用滚动使用:

page.classList.add('noscroll'); 

要启用滚动使用:

page.classList.remove('noscroll'); 

在CSS文件中添加:

.noscroll { 
    position: fixed!important 
} 
+1

职位:固定;是我的解决方案 – StackHola 2014-06-27 08:38:46

+0

请注意,当使用位置:固定时,身体的滚动位置将移动到顶部,可能会令人不安 – 2015-08-26 03:09:33

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

+3

这只适用于IE,因此不建议用于项目。 – Leonard 2014-12-09 17:06:48

与CSS

body,html{ 
    overflow:hidden 
} 

添加此CSS

body.disable-scroll { 
    overflow: hidden; 
} 

当禁用运行这段代码

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

以及何时启动运行这段代码

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