在处理iframe的高度自适应这个问题时,按照一般的写法,在父页面里的javascript应该是这样的:
    function initIframe() {
        var iframe = document.getElementById("mainframe");
        try{
    var bHeight = iframe.contentWindow.document.body.scrollHeight;
    var dHeight =iframe.contentWindow.document.documentElement.scrollHeight;
    var height = Math.max(bHeight, dHeight);
       iframe.height = height + "px";
        }catch (ex){}
    }
    父页面里iframe的定义:
    <iframe id="mainframe" name="mainframe" src="index.html" onload="initIframe();" width="100%" height="100%" frameborder="0" scrolling="no"></iframe>    在其它浏览器如IE系列、firefox、opera、safari等里都能正确运行,但在chrome5和chrome6里都取不到iframe的高度。
    于是测试一下,
        alert(iframe.contentWindow.document);
    只有在chrome里弹出是undefined,其它浏览器都是object HTMLDocument,原来chrome不支持跨frame的变量的获取!于是乎,在iframe页面里调用window.parent.**在chrome里也是不允许的!
    这样的话,在chrome里,按照一般的方法无法使iframe的高度自适应。那么,有没有其它的方法,能解决这个问题呢?本人在探索中,也期待大家能提出好的意见。

解决方案 »

  1.   

    如果父容器不设置高度的话,iframe的高度是可以自动的。我刚试了一下,在IE6和chrome里是可以的,但FF不行。LZ可以自己试试,如果是可以的,那就分开处理。
    <div style="width:200px;float:left;">
        <iframe id='t' scrolling="auto" style="height:100%;width:100%; "src="http://www.baidu.com"></iframe>
    </div>
      

  2.   

        我想实现的效果是,iframe里的子页面的DOM动态改变后,子页面高度发生变化,这时父页面取到子页面内容的高度,并调整iframe的高度(不让它出现垂直滚动条):
        iframe.height = (子页面动态改变的高度);
        在父页面里是通过一个定时器:
        window.setInterval(initIframeHeight, 200);
        来不断获取子页面动态改变的高度的。
        现在的问题在于,只有chrome不能获取子页面的高度(或许chrome它认为这与安全有关),其它主要的浏览器都ok。
      

  3.   

    :1、循序渐进的学习Windows Embedded系统入门课程,包括什么?
    答案:E 
     
      

  4.   

    "只有chrome不能获取子页面的高度(或许chrome它认为这与安全有关)",你可以再子页面内调用父页面的变量进行赋值,然后定时读取被赋值的变量,改变子iframe高度,直接调用parent.变量=值或者top.变量=值(已经试过可以的),不要用window.parent,因为在iframe内window.parent=parent。
      

  5.   

    上面的代码 我在Firefox3.6.6中试过 怎么也不行啊??
      

  6.   

    if(window.navigator.userAgent.indexOf("Chrome") > 0) {
    f.scrolling = "auto";
    }
      

  7.   

    听说用jquery可以解决,chrome不支持parent