在ASP中动态调整iframe大小

时间:2009-09-29 21:46:23

标签: asp.net

我想通过Iframe在另一个页面中显示我的页面。
问题是iframe没有自动调整大小(高度)。

如何自动调整大小?或者也许有更好的方法在另一个页面中显示一个页面?

2 个答案:

答案 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的页面末尾。然后就可以了。