我想通过Iframe在另一个页面中显示我的页面。
问题是iframe没有自动调整大小(高度)。
如何自动调整大小?或者也许有更好的方法在另一个页面中显示一个页面?
答案 0 :(得分:1)
以下是一种方式:http://www.mattcutts.com/blog/iframe-height-scrollbar-example/
如果框架的高度在被编码后可能会发生变化(例如扩展/可折叠区域),那么您可以设置轮询机制,以便在尺寸发生变化时定期调整框架的大小。像这样:
<html>
<head> <title>Parent frame</title> </head>
<body onload="window.setTimeout(resizeFrame, 250)" bgcolor="#cccccc">
<script type="text/javascript">
// Firefox worked fine. Internet Explorer shows scrollbar because of frameborder
function resizeFrame() {
var f = document.getElementById('childframe');
if (f.style.height != f.contentWindow.document.body.scrollHeight + "px")
f.style.height = f.contentWindow.document.body.scrollHeight;
window.setTimeout(resizeFrame, 250)
}
</script>
<p>Parent frame.</p>
<p>Parent frame.</p>
<p>Parent frame.</p>
<p>Parent frame.</p>
<p>
<iframe frameborder=0 src="./innerframe.htm" name="childframe" id="childframe">
</iframe>
</p>
</body>
</html>
注意:我假设您正在使用框架,因为您正在从其他域中提取内容。如果您从同一个域中提取内容,则可以使用XmlHttpRequest简单地使用脚本来获取内容,然后将HTML注入父页面上的DIV。如果内容位于不同的域上,则由于浏览器的跨站点脚本限制,您无法执行此操作。
答案 1 :(得分:1)
setInterval(function() {
var ifm = document.getElementById("ifrmeID");
var h = ifm.contentWindow.document.body.scrollHeight;
ifm.height = h < 400 ? 400 : h;
}, 800);
400是默认高度,如果您不希望iframe太短,800(ms)是频率,您可以调整这两个值。将js放在包含iframe的页面末尾。然后就可以了。