现在的位置: 首页 > 综合 > 正文

iframe高度处理【原创】

2013年06月08日 ⁄ 综合 ⁄ 共 2050字 ⁄ 字号 评论关闭

  以前处理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);
    }
}

  setIFrameHeight()最简单了,只要在主页面加这么一句就可以了,内部页面就不需要写什么了。

抱歉!评论已关闭.