以前处理iframe高度的时候,是在每个页面里写两句js,感觉太烦了,今天处理了下,并增加对ff的支持。代码如下:
/**
* iframe高度处理
* @author zxub 2006-09-29
*/
/**
* 设置iframe高度等于内部页面高度,用于内部页面
*/
function setParentHeight(_iframeId)
{
if (parent.setIFrameHeight) return;
if (window.addEventListener) //firefox
{
var _action=function()
{
var _iframe=parent.document.getElementById(_iframeId);
if (!_iframe) return;
_iframe.height=_iframe.contentDocument.body.offsetHeight+16;
}
window.addEventListener("load", _action, false);
}
else if (window.attachEvent) //IE
{
var _action=function()
{
if (!parent.document.getElementById(_iframeId)) return;
parent.document.getElementById(_iframeId).height=document.body.scrollHeight;
}
window.attachEvent("onload", _action);
}
}
/**
* 设置iframe高度等于内部页面高度,用于父级页面
*/
function setIFrameHeight(_iframeId)
{
if (window.addEventListener) //firefox
{
var _action=function()
{
var _iframe=document.getElementById(_iframeId);
if (!_iframe) return;
_iframe.height=_iframe.contentDocument.body.scrollHeight;
_iframe.onload=function()
{
this.height=this.contentDocument.body.offsetHeight+16;
}
}
window.addEventListener("load", _action, false);
}
else if (window.attachEvent) //IE
{
var _action=function()
{
if (!document.getElementById(_iframeId)) return;
document.getElementById(_iframeId).height=document.frames[_iframeId].document.body.scrollHeight;
document.getElementById(_iframeId).onreadystatechange=function()
{
if (this.readyState=="complete")
{
this.height=document.frames[_iframeId].document.body.scrollHeight;
}
}
}
window.attachEvent("onload", _action);
}
}
* iframe高度处理
* @author zxub 2006-09-29
*/
/**
* 设置iframe高度等于内部页面高度,用于内部页面
*/
function setParentHeight(_iframeId)
{
if (parent.setIFrameHeight) return;
if (window.addEventListener) //firefox
{
var _action=function()
{
var _iframe=parent.document.getElementById(_iframeId);
if (!_iframe) return;
_iframe.height=_iframe.contentDocument.body.offsetHeight+16;
}
window.addEventListener("load", _action, false);
}
else if (window.attachEvent) //IE
{
var _action=function()
{
if (!parent.document.getElementById(_iframeId)) return;
parent.document.getElementById(_iframeId).height=document.body.scrollHeight;
}
window.attachEvent("onload", _action);
}
}
/**
* 设置iframe高度等于内部页面高度,用于父级页面
*/
function setIFrameHeight(_iframeId)
{
if (window.addEventListener) //firefox
{
var _action=function()
{
var _iframe=document.getElementById(_iframeId);
if (!_iframe) return;
_iframe.height=_iframe.contentDocument.body.scrollHeight;
_iframe.onload=function()
{
this.height=this.contentDocument.body.offsetHeight+16;
}
}
window.addEventListener("load", _action, false);
}
else if (window.attachEvent) //IE
{
var _action=function()
{
if (!document.getElementById(_iframeId)) return;
document.getElementById(_iframeId).height=document.frames[_iframeId].document.body.scrollHeight;
document.getElementById(_iframeId).onreadystatechange=function()
{
if (this.readyState=="complete")
{
this.height=document.frames[_iframeId].document.body.scrollHeight;
}
}
}
window.attachEvent("onload", _action);
}
}
setIFrameHeight()最简单了,只要在主页面加这么一句就可以了,内部页面就不需要写什么了。