解决动态高度的iframe加载后双滚动条的问题

页面部分

<div class='parentdiv'>
    <iframe id="iframepart" src="" ></iframe>
</div>
  • iframe 高度不确定,再parent page 加载的时候可以通过获取页面内 iframe页面body 的方式获得动态高度

    js部分

    $(function(){
    var url ='要跳转的iframe页面';
    $('.parentdiv').css('height',$window.height());
    $('iframepart').attr('src',url);
    });
  • 上述方式若iframe 页面高度超出了屏幕高度,只会加载到屏幕高度,要想获得iframe 页面的实际高度 可以使用 scrollHeight
    因为 jquery 没有 scrollHeight 下述js写在 iframe 页面 获取实际高度

    $(function(){
    var height = (document.body.scrollHeight)+'px';
    $('parentdiv',window.parent.document).css('height',height);
    });
  • 若iframe数据是通过ajax 异步加载的,里面的div高度也是动态获取的,这里有个问题,当div内的内容没有加载到,上面的 var height 只能获取到没有撑开的高度,加载完ajax后还是无法得到实际的高度,这里就需要等所有document 树加载完再加载获取实际高度的方法

终极版,写在 iframe 页面

var ht = setInterval('getHeight',100);
function getHeight(){
    if(document.readyState == 'complete'){
        var height = (document.body.scrollHeight)+'px';
        $('parentdiv',window.parent.document).css('height',height);
        window.clearInterval(gh);
    }
}

也许有更简单的解决方法,但这是我一步步遇到问题和解决的思路和代码,值得记录一下

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值