Iframe DOM方式自适应

控制IFRAME在加载时自适应宽度、高度,两行代码就可以搞定了,今天遇到了这样一个问题:

1、IFRAME页面中部分内容为DOM方式动态填充,填充页面后,IFRAME部分内容被遮住。

2、尝试parent.document.getElementById('MainFrameId');的方式来控制IFRAME宽度、高度,无果

      尝试重写了两个静态的HTML代码,成功,放到IIS目录访问,亦然成功

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
     </HEAD>
     <BODY>
     <div id="div" style="background-color:green">
    <iframe id="pframe" src="iframe.html" scrolling="no" ></iframe>
    <br><br><br><br><br><br><br><br><br><br>
    00fdsdsfsdfsdfsdfsdfd
    <div>
    <script>
    //document.getElementById('pframe').style.height=1000;
    </script>
     </BODY>
    </HTML>

Iframe.html

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
     </HEAD>
     <BODY>
     <script>
     function Set()
     {
        var obj = parent.document.getElementById('pframe');
    //  obj.style.height=1000;
    //  return;
            if( obj != null ){
                obj.style.height = document.body.scrollHeight + 20;
                obj.style.width =document.body.scrollWidth;
            }
    //      alert(document.body.scrollHeight + "," + document.documentElement.scrollHeight);
     }
      </script>
      fsdf
      <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>
      <input type=button value="地方地方" οnclick="Set();">
     </BODY>
    </HTML>


3、尝试IFRAME调用父窗体方法后,成功

4、尝试采用框架集的方式设定当前IFRAME的样式,成功


//2011-10-12 最新的自适应可供参考,可在页面加载完成时自动调用,也可由被嵌页面调用,前提是不要跨域。

如果存在跨域问题,则需要通过内嵌页面中增加代理页(该代理页为父窗体同一个APP)

//auto height
function setAutoWH() {
    try {
        var name = "iframeTip";
        var iframe = document.getElementById(name);

        if (iframe.contentDocument) {
            document.getElementById('divTip').style.left = (parseInt(window.screen.availWidth) - parseInt(iframe.width)) / 2 + 'px';
            iframe.height = iframe.contentDocument.height; iframe.width = iframe.contentDocument.height <= 200 ? 570 : 330; $f("divTip").style.height = iframe.height + "px"; $f("divTip").style.width = iframe.width + "px"; $f("divMask").style.height = document.body.scrollHeight + "px";
        }
        else { document.getElementById('divTip').style.left = (parseInt(window.screen.availWidth) - parseInt(iframe.scrollWidth)) / 2 + 'px'; iframe.style.height = document.frames[name].document.body.scrollHeight; iframe.style.width = document.frames[name].document.body.scrollWidth; $f("divTip").style.height = iframe.style.height; $f("divTip").style.width = iframe.style.width; }
    } catch (e) { }
}
function setAutoHeight(name) {
    try {
        var iframe;
        if (!name) name = "MainFrmTd";
        iframe = document.getElementById(name);
        if (iframe.contentDocument) {
            var h1 = 0, h2 = 0, d = iframe.contentDocument, dd = d.documentElement;
            iframe.style.height = "10px";
            if (dd && dd.scrollHeight) h1 = dd.scrollHeight;
            if (d.body) h2 = d.body.scrollHeight;

            var h = Math.max(d.documentElement["clientHeight"], d.body["scrollHeight"], d.documentElement["scrollHeight"], d.body["offsetHeight"], d.documentElement["offsetHeight"])
            //var h = Math.max(h1, h2);
            if (document.all) h += 4;
            if (window.opera) h += 1;
            iframe.style.height = h + 5 + "px";
        }
        else {
            var d = document.frames[name].document;
//            var h = Math.max(d.documentElement["clientHeight"], d.body["scrollHeight"], d.documentElement["scrollHeight"], d.body["offsetHeight"], d.documentElement["offsetHeight"]);
            var h = Math.max(d.body["scrollHeight"], d.documentElement["scrollHeight"], d.body["offsetHeight"]);
            iframe.style.height = h + 5 + "px";
        }
    }
    catch (e) { }
}

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值