none
关于iframe里的高度问题,求高手指教 RRS feed

  • 问题

  • 代码如下:不知道哪里出了问题,试过很多方法,还是无法完全显示iframe的高度为屏幕高度或浏览器高度,求指教.

    <head>
    <meta charset="utf-8"/>
    <title>setTimeout实例 - </title>

    <script language="javascript">
    window.setTimeout('endo()',5000);
    function dyniframesize(down) { 
    var pTar = null; 
    if (document.getElementById){ 
    pTar = document.getElementById(down); 

    else{ 
    eval('pTar = ' + down + ';'); 

    if (pTar && !window.opera){ 
    //begin resizing iframe 
    pTar.style.display="block" 
    if (pTar.contentDocument && pTar.contentDocument.body.offsetHeight){ 
    //ns6 syntax 
    pTar.height = pTar.contentDocument.body.offsetHeight +20; 
    pTar.width = pTar.contentDocument.body.scrollWidth+20; 

    else if (pTar.Document && pTar.Document.body.scrollHeight){ 
    //ie5+ syntax 
    pTar.height = pTar.Document.body.scrollHeight; 
    pTar.width = pTar.Document.body.scrollWidth; 




    </script>
    </head>
    <body  height="100%">
    <script language="javascript">


    function endo(){

    document.getElementById("frame1").src="http://www.21cn.com"

    window.setTimeout('endo1()',5000);
    }

    function endo1(){

    document.getElementById("frame1").src="http://www.baidu.com"

    window.setTimeout('endo2()',5000);
    }

    function endo2(){

    document.getElementById("frame1").src="http://www.bing.com"

    window.setTimeout('endo()',10000);
    }



    </script>
    <p> (c)  </p>
    <iframe src="http://www.yahoo.com.cn" id="frame1" name="frame1" frameBorder="0" scrolling=no width="100%" 
    heigh="javascript:document.body.clientHeight;" onLoad="javascript:dyniframesize('frame1');"></iframe>
    <p> (c)  </p>
    </body>
    </html>

    2012年10月18日 11:10

答案

  • 设置成浏览器的尺寸,使用的是document.body.offsetHeight,document.documentElement.offsetHeight之类的,不是pTar.contentDocument.body.offsetHeight也不是pTar.Document.body.scrollHeight,

    document.getElementById("frame1").style.height = Math.max(document.body.offsetHeight,document.documentElement.offsetHeight) + "px";


    【孟子E章】

    • 已标记为答案 hzpemu 2012年10月22日 3:25
    2012年10月21日 2:59
    版主
  • 设置成浏览器的尺寸,使用的是document.body.offsetHeight,document.documentElement.offsetHeight之类的,不是pTar.contentDocument.body.offsetHeight也不是pTar.Document.body.scrollHeight,

    document.getElementById("frame1").style.height = Math.max(document.body.offsetHeight,document.documentElement.offsetHeight) + "px";


    【孟子E章】

    现在改成这样就行了,谢谢!

    <head>
    <meta charset="utf-8"/>
    <title>setInterval实例 - </title>

    <script language="javascript">
    window.setTimeout('endo()',5000);


    </script>
    </head>
    <body  height="100%">
    <script language="javascript">

    function endo(){

    document.getElementById("frame1").src="http://www.21cn.com";
    window.setTimeout('endo1()',5000);
    }

    function endo1(){

    document.getElementById("frame1").src="http://www.baidu.com";
    window.setTimeout('endo2()',5000);
    }

    function endo2(){

    document.getElementById("frame1").src="http://www.bing.com";
    window.setTimeout('endo()',10000);
    }



    </script>
    <p> (c)  </p>
    <iframe src="http://www.yahoo.com.cn" id="frame1" name="frame1" frameBorder="0" scrolling="no" width="100%"  onLoad="javascript:document.getElementById('frame1').style.height = Math.max(document.body.offsetHeight,document.documentElement.offsetHeight) + 'px';"></iframe>
    <p> (c)  </p>
    </body>
    </html>

    • 已标记为答案 hzpemu 2012年10月22日 3:27
    2012年10月22日 3:26

全部回复

  • 浏览器不允许跨域访问的,所以访问跨域对象的body属性是没有权限的

    【孟子E章】

    2012年10月19日 5:03
    版主
  • 其实我可以不需要访问跨域对像的属性,但至少我估计可以把iframe的宽高设成我现时正在使用的浏览器的宽高吧?(iframe里面内嵌的网页大小我是不管的)

    这个是JS语言上的限制还是浏览器有问题?jquery有对应的办法解决吗?谢谢!

    2012年10月19日 9:04
  • 设置成浏览器的尺寸,使用的是document.body.offsetHeight,document.documentElement.offsetHeight之类的,不是pTar.contentDocument.body.offsetHeight也不是pTar.Document.body.scrollHeight,

    document.getElementById("frame1").style.height = Math.max(document.body.offsetHeight,document.documentElement.offsetHeight) + "px";


    【孟子E章】

    • 已标记为答案 hzpemu 2012年10月22日 3:25
    2012年10月21日 2:59
    版主
  • 设置成浏览器的尺寸,使用的是document.body.offsetHeight,document.documentElement.offsetHeight之类的,不是pTar.contentDocument.body.offsetHeight也不是pTar.Document.body.scrollHeight,

    document.getElementById("frame1").style.height = Math.max(document.body.offsetHeight,document.documentElement.offsetHeight) + "px";


    【孟子E章】

    现在改成这样就行了,谢谢!

    <head>
    <meta charset="utf-8"/>
    <title>setInterval实例 - </title>

    <script language="javascript">
    window.setTimeout('endo()',5000);


    </script>
    </head>
    <body  height="100%">
    <script language="javascript">

    function endo(){

    document.getElementById("frame1").src="http://www.21cn.com";
    window.setTimeout('endo1()',5000);
    }

    function endo1(){

    document.getElementById("frame1").src="http://www.baidu.com";
    window.setTimeout('endo2()',5000);
    }

    function endo2(){

    document.getElementById("frame1").src="http://www.bing.com";
    window.setTimeout('endo()',10000);
    }



    </script>
    <p> (c)  </p>
    <iframe src="http://www.yahoo.com.cn" id="frame1" name="frame1" frameBorder="0" scrolling="no" width="100%"  onLoad="javascript:document.getElementById('frame1').style.height = Math.max(document.body.offsetHeight,document.documentElement.offsetHeight) + 'px';"></iframe>
    <p> (c)  </p>
    </body>
    </html>

    • 已标记为答案 hzpemu 2012年10月22日 3:27
    2012年10月22日 3:26