zoukankan      html  css  js  c++  java
  • 非跨域情况下iframe 高度自适应的问题解决(一)

    从开始接触iframe,就总是各种坑,现在就部分内容做一个简要的记录总结。

    iframe 高度自适应的问题

    1.问题背景:在默认情况下,iframe标签有一个约150px的默认高度,如果不主动设置iframe的高度,iframe的高度是不会由内容撑开的,而是超出滚动。因此,就涉及到了动态设置iframe高度即iframe高度自适应的问题。

    2.注意:涉及到iframe,一定要放到服务器运行打开,本地运行会报跨域的错误

    3.iframe自适应函数

    /**
    * @param ifm:原生方法获取的iframe对象
    * iframeing:是不传参数时,默认的iframe的id和name
    */
    function iFrameHeight(ifm) {
        ifm = ifm || document.getElementById("iframeing");
        var subWeb = document.frames ? document.frames["iframeing"].document : ifm.contentDocument;
        if (ifm != null && subWeb != null) {
             ifm.height = subWeb.body.scrollHeight;
        }
    }
    

    4.父级页面嵌套子iframe页面的方式

    <div class="main">
    	<iframe src="" name="iframeing" id="iframeing" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" width="100%" height="" style="vertical-align:bottom">
    	</iframe>
    </div>
    

    5.调用方法
    将函数iFrameHeight写在父子页面均引用的公共js里,在父页面调用时:

    $('#iframeing').load(function() {
    	iFrameHeight();
    });
    

    点击切换导航列表,iframe的src被重新赋值,会自动调用iframe的load方法,而不需要再重新写一次。
    注意:load方法只是子iframe页面的dom结构加载完调用的方法,相当于子页面的$(document).ready(function() {})里面调用的方法。所以,当子iframe页面的数据是异步加载出来的,或者是有点击按钮的切换显示隐藏导致页面高度变化的,都需要在其对应的位置调用该函数iFrameHeight

    6.在子页面调用iFrameHeight:

    //第一步:获取父级页面的iframe节点
    var parentIfr = window.parent.document.getElementById("iframeing");
    //第二步:调用函数
    iFrameHeight(parentIfr);
    

    至此,当不涉及跨域问题时,已经可以解决iframe的高度自适应的问题了。

  • 相关阅读:
    [ Talk is Cheap Show me the CODE ] : jQuery Mobile工具栏
    Html 表格
    概率论机器学习的先验知识(上)
    ODPS 下一个map / reduce 准备
    Zygote过程【3】——SystemServer诞生
    Java获取的一天、本星期、这个月、本季度、一年等 开始和结束时间
    中国国家干部级别、职称级别、事业单位级别
    Multivariate Adaptive Regression Splines (MARSplines)
    在Visual Studio中开发Matlab mex文件,生成mexw64/mexw32
    Windows删除文件时出现,“正在准备 再循环”
  • 原文地址:https://www.cnblogs.com/chaoyueqi/p/10020137.html
Copyright © 2011-2022 走看看