我的页面里有一个IFrame,src来自另一个网站,我想根据它的内容高度来设置IFrame的高度。但是发现获取不到Iframe.ContentWindow.XXXXX,比如ScrollHeight,OffsetHeight之类的,在firebug里单步debug是访问不到,VS里用debugger也看不到这些量的值。这个跨域的问题js有办法实现吗?

解决方案 »

  1.   

    <iframe src="..." name=show  onload="this.height=show.document.body.scrollHeight:600"></iframe>
      

  2.   

    我不觉得3楼的会解决问题。这是IFrame的Same Origin Policy 的安全限制。如果你对Iframe的内容没有控制的话(比较写JS在Iframe中),这基本上是实现不了的。
      

  3.   

    我好想用frameset做成功过,你找找frameset的资料看看
      

  4.   


    你试试就知道行不行啦,onload="this.height=show.document.body.scrollHeight"这句话写在iframe的onload里可以,你写在其他地方,分离出来就不行还有,onload="this.height=show.document.body.scrollHeight:600"改成 onload="this.height=show.document.body.scrollHeight"
      

  5.   

    楼主说的IFrame中的东西来自另一个网站,你怎么就知道楼主可以修改另一个网站的内容?再说,你写在Iframe的onload里,你怎么就知道IFrame的内容永远会在一个IFrame中使用?如果直接访问IFrame中的内容,你的onload 就会报错。
      

  6.   


    // 调整页面
    function AdjuestPage()
    {
        var h = GetAdjuestmentHeight();
        var f = document.getElementById("RightFrame"); 
        f.height = h;
        
        var left = document.getElementById("LeftFrame"); 
        left.height = h;
            
        var  x= 240;
        if($("#LeftPanel").css("display") == "none") x = 40;
        f.width = window.screen.availWidth - x;
    }// 获取调整后的Height
    function GetAdjuestmentHeight()
    {
        var right = document.getElementById("RightFrame"); 
        var rb = right.contentWindow.document.body;
        var rbh = rb.scrollHeight + 5;
        
        var left = document.getElementById("LeftFrame"); 
        var lb = left.contentWindow.document.body;
        var lbh = lb.scrollHeight + 25;
        
        var h = window.screen.availHeight - 258;
        return h;
        return Math.max(Math.max(rbh, lbh), h);
    }
      

  7.   


    <iframe id="RightFrame" style="z-index:-1;" onreadystatechange="rightFrameChanged()" src="about:blank" frameborder="0" width="100%" onload="RightFrameLoaded();"></iframe>
      

  8.   

    <iframe src=”http://www.wf168.com“ frameborder="0" scrolling="no" height="200"></iframe>不能实现吧