我的搜索页面上有一个form和iframe,代码如下。其中simpleResult.jsp中是搜索结果,这个搜索结果的内容不是一下就显示出来的,而是使用xmlhttp异步传输过来的,在每一条记录中还可以点击展开显示其它的内容。这个搜索结果页面我要放在iframe中,我用了网上给的各种方法都没有达到不要滚动条且能够显示所有的结果,点击展开按钮后会自动变大。
谢谢。<form method=get name=search action="simpleResult.jsp"  target="main"></form>
<iframe   style="width:100%;height:100%;"  scrolling ="no" name="main" id="iframe"></iframe>

解决方案 »

  1.   

    function SetWinHeight(obj) {
        var win = obj;
        win.height = 0;
        if (document.getElementById) {
            if (win && !window.opera) {
                if (win.contentDocument && win.contentDocument.documentElement.offsetHeight) {
                    if ($.browser.msie && $.browser.version == 8.0) {
                        alert(win.contentDocument.documentElement.scrollHeight);
                        win.height = win.contentDocument.documentElement.scrollHeight;
                    } else {
                        win.height = win.contentDocument.documentElement.offsetHeight;
                    }
                }
                else if (win.Document && win.Document.documentElement.scrollHeight) {
                    win.height = win.Document.documentElement.scrollHeight;
                } else {
                    win.height = win.contentDocument.documentElement.scrollHeight;
                }
            }
        }
    }
    //在iframe的onload事件中调用SetWinHeight(this)
    兼容多种浏览器
      

  2.   

    谢谢,载入出错了:
    网页错误详细信息
    消息: 'contentDocument.documentElement' 为空或不是对象
      

  3.   

    呵呵,试试这个
    <html>
    <head>
    <script language="javascript">//自动设置iframe高度var getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1];
    var FFextraHeight=getFFVersion>=0.1? 16 : 0    
    function dyniframesize(iframename) 
    {   
      var pTar = null;   
      if (document.getElementById)
      {   
        pTar = document.getElementById(iframename);   
      }   
      else
      {   
        eval('pTar = ' + iframename + ';');   
      }   
      
      if (pTar && !window.opera)
      {   
        pTar.style.display="block" ; 
        if (pTar.contentDocument && pTar.contentDocument.body.offsetHeight)
        {   
          pTar.height = pTar.contentDocument.body.offsetHeight+FFextraHeight + 100;    
        }   
        else if (pTar.Document && pTar.Document.body.scrollHeight)
        {   
          pTar.height = pTar.Document.body.scrollHeight + 100;   
        }   
      
      }   
      

    </script>
    </head>
    <body>
    <iframe name="iframe1" id="iframe1" onload="javascript:{dyniframesize('userzone_content_info_page_iframe');}"
    frameborder="0" scrolling="auto" width="97%" height="100%" src=""></iframe>
    </body>
    </html>
      

  4.   

    谢谢,出现这样个错误: 'parent.document.all.main.style' 为空或不是对象。
      

  5.   

    每次提交表单的时候,结果显示在iframe里,这是一种伪无刷新。你要让iframe自适应高度,实际上就是要得到本页面刷新后的高度,只是说本页面刷新后是在iframe里显示的。那就给本页面的body写一个onload事件。事件首先要做个判断window.parent != window.self为真则向下执行,获取body的高度。var _ph=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight);将值赋给iframewindow.parent.document.getElementById("iframeID").style.height = _ph;
      

  6.   

    parent.document.frames[0].style.height=document.body.scrollHeight; 
      

  7.   

    window.frames["main"].document.height=document.documentElement.scrollHeight
      

  8.   

    以下代码在IE6和FF下测试通过:
    test.htm<html>
    <head>
    <script language="javascript">//自动设置iframe高度var getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1];
    var FFextraHeight=getFFVersion>=0.1? 16 : 0    
    function dyniframesize(iframename) 
    {   
      var pTar = null;   
      if (document.getElementById)
      {   
        pTar = document.getElementById(iframename);   
      }   
      else
      {   
        eval('pTar = ' + iframename + ';');   
      }   
      
      if (pTar && !window.opera)
      {   
        pTar.style.display="block" ; 
        if (pTar.contentDocument && pTar.contentDocument.body.offsetHeight)
        {   
          pTar.height = pTar.contentDocument.body.offsetHeight+FFextraHeight + 100;    
        }   
        else if (pTar.Document && pTar.Document.body.scrollHeight)
        {   
          pTar.height = pTar.Document.body.scrollHeight + 100;   
        }   
      
      }   
      

    </script>
    </head>
    <body>
    <input type="button" id="btn1" name="btn1" value="页面1" onclick="document.getElementById('iframe1').src='t1.htm';"><input type="button" id="btn2" name="btn2" value="页面2" onclick="document.getElementById('iframe1').src='t2.htm';">
    <iframe name="iframe1" id="iframe1" onload="javascript:{dyniframesize('iframe1');}"
    frameborder="0" scrolling="auto" width="97%" height="100%"></iframe>
    </body>
    </html>t1.htm<html>
    <head></head>
    <body>
    <div style="height:300px; width:500px; background:#f00;">页面1</div>
    </body>
    </html>t2.htm
    [code=HTML]
    <html>
    <head></head>
    <body>
    <div style="height:1700px; width:500px; background:#ff0;">页面2</div>
    </body>
    </html>[/code]
      

  9.   

    t1.htm和t2.htm是两个测试页面,不小心发一起了,自己分开就行。
      

  10.   

    你的代码没有问题,但是到我页面上还是有滚动条。我使用的是jsp页面,在页面上的内容是异步传输过来的,是逐步填充的,这样是不是有问题?而且每一条记录点击后都会有下拉的内容。