iframe开发中遇到的问题

问题描述:前段开发中给出的静态页面,每个页面中都存在导航以及头部尾部信息,现在需要对其公共部分进行抽取,并实现点击菜单导航左侧不刷新,右侧主体局部刷新。

解决办法:使用iframe做页面嵌套,删除重复的头部和菜单导航
frameborder=“0” 规定不显示框架周围的边框。
scrolling=“no” 规定在 iframe 中不显示滚动条。
嵌套信息

<iframe id="iframepage" src='${innerUrl}' width="100%" frameborder="0" scrolling="no" onload="iframeLoad()"></iframe>

监听菜单,做点击事件,替换iframe中的src来实现右侧主体内容的刷新

<li><a href="javascript:;" onclick="openIframepage('${contentp_path}${child.menuurl}')">${child.menuname}</a></li>
<script>
    function openIframepage(url) {
        var ifm= document.getElementById("iframepage");
        if(ifm!=null&&ifm.src!=url){ //新的url和当前不相同
            ifm.src=url;//替换url实现刷新
        }
    }

//页面加载过程
    function iframeLoad()
    {
        var ifm=document.getElementById("iframepage");
        ifm.height=0;
        ifm.height=ifm.contentWindow.document.body.scrollHeight;
    }
</script>

问题点:iframe页面嵌套时存在页面高度自适应问题,当页面高度被撑大无法回缩
解决办法:在页面加载过程中,将之前加载的页面高度覆盖掉,重置为0,以此达到收缩目的,再把嵌套页面的高度赋值给iframe,实现高度自适应。
问题点:由于网络原因可能还会出现先加载视图,然后才接收到后端传送的数据,仍无法完全实现高度自适应这个尴尬问题,所以我们要在子页面加载数据完成之后也能控制到父页面的高度,以此来达到高度自适应
解决办法:在子页面引入的js文件中编写这样一个js方法

function iframeLoad()
{
    var ifm = window.parent.document.getElementById('iframepage');
    ifm.height=0;
    ifm.height=document.body.scrollHeight;
}

在子页面初始化页面访问后端数据请求完成之后,再调用上述方法,以此来控制父页面的高度
例如:
在这里插入图片描述
到这里iframe页面自适应的问题算是完全解决了,撒花
参考博客
https://blog.youkuaiyun.com/ye987987/article/details/51832066

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值