Iframe自适应高度,Iframe高度问题解决

Iframe自适应高度,Iframe高度问题解决

================================

©Copyright 蕃薯耀 2021-03-10

https://www.cnblogs.com/fanshuyao/

 

一、Iframe自适应高度方法

/**
 * 父级页面获取子级页面的高度 给元素设置高度
 * 在onload事件之后才生效,即第一次加载才生效,后面高度变化不再生效
 * @param id
 * @returns
 */
function setIframeHeightAfterLoad(id){
    try{
        var iframe = document.getElementById(id);
        if(iframe.attachEvent){
            iframe.attachEvent("onload", function(){
                //console.log("iframe.attachEvent");
                iframe.height =  iframe.contentWindow.document.documentElement.scrollHeight;
            });
            return;
            
        }else{
            iframe.onload = function(){
                iframe.height = iframe.contentDocument.body.scrollHeight;
                //console.log("iframe.onload");
            };
            return;                 
        }
    }catch(e){
        throw new Error('setIframeHeightAfterLoad Error');
    }
};


/**
 * 父级页面获取子级页面的高度 给元素设置高度
 * 配合定时使用:window.setInterval("thisIframeHeightAuto()", 200);
 * @param id
 * @returns
 */
function setIframeHeight(id){
    try{
        var iframe = document.getElementById(id);
        if(iframe.attachEvent){
            iframe.height =  iframe.contentWindow.document.documentElement.scrollHeight;
            return;
            
        }else{
            iframe.height = iframe.contentDocument.body.scrollHeight;
            return;                 
        }
    }catch(e){
        throw new Error('setIframeHeight Error');
    }
};


/**
 * 子级页面给父级页面元素设置高度
 * @param id
 * @returns
 */
function setParentIframeHeight(id){
    try{
        var parentIframe = parent.document.getElementById(id);
         if(window.attachEvent){
            window.attachEvent("onload", function(){
                parentIframe.height = document.documentElement.scrollHeight;
            });
            return;
        }else{
            window.onload = function(){
                parentIframe.height = document.body.scrollHeight;
            };
            return;                 
        }
    }catch(e){
        throw new Error('setParentIframeHeight Error');
    }
};

 

二、详细使用

<iframe id="socialHousingIframe" border="0" frameborder="0" scrolling="no" 
    width="100%" height="100%" style="padding: 0; margin: 0;" 
    src="../../static/analysis/socialHousing.html">
</
iframe>

 

function thisIframeHeightAuto(){
    setIframeHeight("socialHousingIframe");
};

 

$(function(){

//定时处理 window.setInterval(
"thisIframeHeightAuto()", 200);

  //首次加载使用setIframeHeightAfterLoad,可以省略,由定时任务处理 setIframeHeightAfterLoad(
"socialHousingIframe"); });

 

 

(如果文章对您有所帮助,欢迎捐赠,^_^)

 

================================

©Copyright 蕃薯耀 2021-03-10

https://www.cnblogs.com/fanshuyao/

 

posted @ 2021-03-10 18:45  蕃薯耀  阅读(595)  评论(1编辑  收藏  举报