我想让iframe占用其显示内容而不显示滚动条所需的垂直空间。 有可能吗?
有什么解决方法吗?
这应该将IFRAME高度设置为其内容的高度:
1 2 3
| <script type="text/javascript">
the_height = document.getElementById('the_iframe').contentWindow.document.body.scrollHeight;
document.getElementById('the_iframe').height = the_height; |
您可能想在IFRAME中添加scrolling="no"以关闭滚动条。
编辑:糟糕,忘记声明the_height。
还请检查以下线程:DiggBar如何根据不在其域上的内容来动态调整其iframe的高度?
它解决了相同的问题。
解决方法是不要在服务器端使用和预处理代码。
在IFRAME源文档中添加DOCTYPE声明将有助于从该行计算正确的值
1
| document.getElementById('the_iframe').contentWindow.document.body.scrollHeight |
有关示例,请参见W3C DOCTYPE
IE和FF都存在问题,因为它以"怪癖"模式呈现IFRAME文档,直到添加DOCTYPE。
FF / IE / Chrome支持:.scrollHeight无法与Chrome一起使用,因此我想出了一个使用jQuery的javascript示例,用于根据iframe内容设置页面上的所有IFRAME高度。注意:这是您当前域内的参考页面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <script type="text/javascript">
$(document).ready(function(){
$('iframe').each(function(){
var context = $(this);
context.load(function(event){ // attach the onload event to the iframe
var body = $(this.contentWindow.document).find('body');
if (body.length > 0 && $(body).find('*').length > 0) { // check if iframe has contents
context.height($(body.get(0)).height() + 20);
} else {
context.hide(); // hide iframes with no contents
}
});
});
}); |
此CSS代码段应删除垂直滚动条:
1 2 3 4
| body {
overflow-x: hidden;
overflow-y: hidden;
} |
我尚不确定它是否会占用所需的垂直空间,但我会看看是否能解决。