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的高度自适应的问题了。

  • 相关阅读:
    lxml.etree 教程5:Using XPath to find text
    .Net程序员学习Linux最简单的方法
    海南航空宁波到重庆的"变态"机票
    《帮我买单》帮我买单的故事
    VS 2005 Beta2 Team版正在下载中
    安家博客园
    标记:Oracle里面的过程两种参数的不同
    今天搞VS 2005搞了半天没真正搞出个什么名堂来
    Oracle中INSTR方法
    今天可算把VS 2005 Beta2安装上了,赶紧体会体会
  • 原文地址:https://www.cnblogs.com/chaoyueqi/p/10020137.html
Copyright © 2011-2022 走看看