我有一个包含大量内容的HTML,并且只要加载HTML就会出现垂直滚动条。现在从这个HTML加载全屏IFRAME。问题是当加载IFRAME时,父滚动条仍然存在,我想在加载Iframe时禁用滚动条。
我试过了:
document.body.scroll = "no"
,它无法与FF和Chrome一起使用。document.style.overflow = "hidden";
之后,我仍然可以滚动,整个iframe会向上滚动,显示父HTML。我的要求是,当加载IFRAME时,如果父HTML有滚动条,我们永远不能滚动整个IFRAME。
有什么想法吗?
答案 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 ='不';