iframe高度自动适应
2008-09-22 13:05
405 查看
在Web开发过程中,为了提高页面架构层次的清晰性和灵活性,应对复杂的页面布局,使用嵌入式框架iframe可能是最有效的解决办法。如果布局比较复杂或页面层次较多,则可能会用到嵌套多层的iframe,然而iframe并不会根据页面高度自动调整自身高度,为了屏蔽滚动条提高视觉效果,就需要使用javascript代码使iframe自动调整高度。
1、单层情况,假设在A.aspx页面的某个位置嵌入页面B.aspx,则在A页面中需使用一个嵌入框架iframeA,其示例代码如下:
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<head>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<script type="text/javascript">
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
//iframeName:框架ID
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
function SetIframeSize(iframeName)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedBlock.gif)
...{
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var iframe = document.getElementById(iframeName);
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
try
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedSubBlock.gif)
...{
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var bHeight = iframe.contentWindow.document.body.scrollHeight;
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
//据说这两个高度可能不一样
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var height = Math.max(bHeight, dHeight);
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
iframe.height = height;
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedSubBlock.gif)
}catch (ex)...{}
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
</script>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
</head>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<body>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<tr>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<td>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<iframe id="iframeA" name="iframeA" scrolling="no" frameborder="0" src="B.aspx" width="100%"
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
onload="SetIframeSize('iframeA');"></iframe>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
</td>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<tr>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
</body>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
2、嵌套两层情况,假设A.aspx页面通过嵌入式框架iframeA嵌入页面B.aspx,页面B.aspx又通过嵌入式框架iframeB嵌入页面C.aspx,其中A.aspx示例代码和单层情况一样,B.aspx页面的示例代码如下:
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<head>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<script type="text/javascript">
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
//iParentFrameName:父框架ID
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
//iframeName:框架ID
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
function SetIframeSize(iParentFrameName,iframeName)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedBlock.gif)
...{
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var iframe = document.getElementById(iframeName);
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
try
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedSubBlock.gif)
...{
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var bHeight = iframe.contentWindow.document.body.scrollHeight;
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
//据说这两个高度可能不一样
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var height = Math.max(bHeight, dHeight);
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
iframe.height = height;
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
//更新父框架高度
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
SetIframeSize2(iParentFrameName)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedSubBlock.gif)
}catch (ex)...{}
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
//iframeName:框架ID
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
function SetIframeSize2(iframeName)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedBlock.gif)
...{
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var iframe = window.parent.parent.document.getElementById(iframeName);
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
try
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedSubBlock.gif)
...{
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var bHeight = iframe.contentWindow.document.body.scrollHeight;
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var height = Math.max(bHeight, dHeight);
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
iframe.height = height;
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedSubBlock.gif)
}catch (ex)...{}
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
</script>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
</head>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<body>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<tr>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<td>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<iframe id="iframeB" name="iframeB" scrolling="no" frameborder="0" src="C.aspx" width="100%"
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
onload="SetIframeSize('iframeA','iframeB');"></iframe>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
</td>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<tr>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
</body>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
其中代码
var iframe = window.parent.parent.document.getElementById(iframeName);
window指C.aspx,window.parent指B.aspx,window.parent.parent指A.aspx
事实上如果没有特别需要(比如B.aspx页面条件加载C.aspx页面)下,A.aspx中iframeA可以不要onload事件。
3、嵌套多层情况
多层嵌层以两层情况为例类推,同上没有特别需要,只设最后一级iframe的onload事件。
1、单层情况,假设在A.aspx页面的某个位置嵌入页面B.aspx,则在A页面中需使用一个嵌入框架iframeA,其示例代码如下:
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<head>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<script type="text/javascript">
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
//iframeName:框架ID
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
function SetIframeSize(iframeName)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedBlock.gif)
...{
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var iframe = document.getElementById(iframeName);
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
try
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedSubBlock.gif)
...{
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var bHeight = iframe.contentWindow.document.body.scrollHeight;
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
//据说这两个高度可能不一样
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var height = Math.max(bHeight, dHeight);
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
iframe.height = height;
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedSubBlock.gif)
}catch (ex)...{}
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
</script>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
</head>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<body>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<tr>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<td>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<iframe id="iframeA" name="iframeA" scrolling="no" frameborder="0" src="B.aspx" width="100%"
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
onload="SetIframeSize('iframeA');"></iframe>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
</td>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<tr>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
</body>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
2、嵌套两层情况,假设A.aspx页面通过嵌入式框架iframeA嵌入页面B.aspx,页面B.aspx又通过嵌入式框架iframeB嵌入页面C.aspx,其中A.aspx示例代码和单层情况一样,B.aspx页面的示例代码如下:
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<head>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<script type="text/javascript">
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
//iParentFrameName:父框架ID
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
//iframeName:框架ID
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
function SetIframeSize(iParentFrameName,iframeName)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedBlock.gif)
...{
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var iframe = document.getElementById(iframeName);
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
try
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedSubBlock.gif)
...{
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var bHeight = iframe.contentWindow.document.body.scrollHeight;
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
//据说这两个高度可能不一样
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var height = Math.max(bHeight, dHeight);
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
iframe.height = height;
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
//更新父框架高度
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
SetIframeSize2(iParentFrameName)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedSubBlock.gif)
}catch (ex)...{}
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
//iframeName:框架ID
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
function SetIframeSize2(iframeName)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedBlock.gif)
...{
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var iframe = window.parent.parent.document.getElementById(iframeName);
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
try
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedSubBlock.gif)
...{
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var bHeight = iframe.contentWindow.document.body.scrollHeight;
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
var height = Math.max(bHeight, dHeight);
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif)
iframe.height = height;
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedSubBlock.gif)
}catch (ex)...{}
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
</script>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
</head>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<body>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<tr>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<td>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<iframe id="iframeB" name="iframeB" scrolling="no" frameborder="0" src="C.aspx" width="100%"
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
onload="SetIframeSize('iframeA','iframeB');"></iframe>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
</td>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
<tr>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
</body>
![](http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif)
...
其中代码
var iframe = window.parent.parent.document.getElementById(iframeName);
window指C.aspx,window.parent指B.aspx,window.parent.parent指A.aspx
事实上如果没有特别需要(比如B.aspx页面条件加载C.aspx页面)下,A.aspx中iframeA可以不要onload事件。
3、嵌套多层情况
多层嵌层以两层情况为例类推,同上没有特别需要,只设最后一级iframe的onload事件。
相关文章推荐
- 父页面iframe高度自动适应子页面iframe高度
- Iframe自动适应宽度和高度(both IE and Firefox )
- 兼容火狐和IE的javascript中iframe自动适应高度
- Iframe自动适应宽度和高度(both IE and Firefox are ok)
- Iframe自动适应高度
- Iframe自动适应高度
- Iframe自动适应宽度和高度
- iframe的用法,以及如何让iframe自动适应父及的宽度和高度
- Iframe 自动适应页面的高度示例代码
- iframe 自动适应高度
- iframe自动适应高度及iframe中含有页签的高度动态适应方法
- iframe 自动适应子页面高度宽度
- iframe自动适应高度
- iframe高度自动适应
- 用iframe 自动适应高度
- 实现IFRAME自动适应高度
- iframe自动适应加载页面高度
- js Iframe 自动适应 高度 宽度
- Iframe 自动适应页面的高度
- 如何让iframe自动适应内容高度