zoukankan      html  css  js  c++  java
  • iframe 根据内容自动改变大小

    最近工作遇到一个iframe的问题 就是iframe需要根据内容高度变化 筛选了无数个搜索引擎返回的数据 得到以下解决方案

    function reinitIframe(){
        var iframe = document.getElementById("frame_content");
        try{
            var bHeight = iframe.contentWindow.document.body.scrollHeight,
                dHeight = iframe.contentWindow.document.documentElement.scrollHeight,
                height = Math.max(bHeight, dHeight);
                iframe.height =  height;
        }catch (ex){}
    
    }
    window.setInterval("reinitIframe()", 200);
    </script> 

    原理就是 不断刷新页面获得iframe内容页面的高度 赋值给iframe

    以下是整个测试页面代码

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>ifram 内有树形节点实例</title>
        <script type="text/javascript">
    function reinitIframe(){
        var iframe = document.getElementById("frame_content");
        try{
            var bHeight = iframe.contentWindow.document.body.scrollHeight,
                dHeight = iframe.contentWindow.document.documentElement.scrollHeight,
                height = Math.max(bHeight, dHeight);
                iframe.height =  height;
        }catch (ex){}
    
    }
    window.setInterval("reinitIframe()", 200);
    </script> 
    </head>
    <body style="background-color: red;">
        <iframe scrolling="no" id="frame_content" style=" 100%;" onload="reinitIframe();" src="./subIframe.html" frameborder="0"></iframe>
    </body>
    </html>
    subIframe.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>iframe 内容页面</title>
        <style type="text/css">
        body{
            background: #ccc;
        }
        </style>
        <script type="text/javascript">
        function CreateNode(str)    
       {  
          //创建新div  
          var NewDiv = document.createElement("div");   
          //对div设置 id属性  
            NewDiv.id = "dd";   
          //创建div内加入的内容  
          var NewText = document.createTextNode(str);  
          //追加一个新的子结点  
            NewDiv.appendChild(NewText);  
          //返回新创建结点数据  
          return NewDiv;                                  
       }  
        function addDome() {
            var node =CreateNode('hello world');
            console.log(node);
            document.body.appendChild(node);
        }
        
        </script>
    
    </head>
    <body>
    <ul>
        <li>hello every body 1</li>
        <li>hello every body 1</li>
        <li>hello every body 1</li>
        <li>hello every body 1</li>
        <li>hello every body 1</li>
        <li>hello every body 1</li>
        <li>hello every body 1</li>
        <li>hello every body 1</li>
        <li>hello every body 1</li>
        <li>hello every body 1</li>
        <li>hello every body 1</li>
        <li>hello every body 1</li>
        <li>hello every body 1</li>
        <li>hello every body 1</li>
        <li>hello every body 1</li>
        <li>hello every body 1</li>
        <li>hello every body 1</li>
        <li>hello every body 1</li>
        <li>hello every body 1</li>
        <li>hello every body 1</li>
        <li>dd</li>
        <li>dd</li>
        <li>dd</li>
        <li>dd</li>
        <li>dd</li>
        <li>dd</li>
        <li>dd</li>
        <li>dd</li>
        <li>dd</li>
        <li>dd</li>
        <li>dd</li>
        <li>dd</li>
        <li>dd</li>
        <li>dd</li>
        <li>dd</li>
        <li>dd</li>
        <li>dd</li>
        <li>dd</li>
        <li>dd</li>
        <li>dd</li>
    </ul>
        <input type="button" value="add dome" onclick="addDome();">
        <a href="./2.html">首页</a>
    </body>
    </html>
  • 相关阅读:
    GPS坐标转百度地图并且加载地图示例.支持微信端访问
    关于vs2013 mysql Ef框架中提示版本不兼容问题的解决办法
    CSS3 关于@font-face引用中文字体解决办法
    登录权限,菜单动态加载,动态渲染功能按钮
    vue-router使用next()跳转到指定路径时会无限循环
    三张图较为好理解JavaScript的原型对象与原型链
    深入javascript之原型和原型链
    vue2.0引入现有css文件
    定制简单的404和403页面
    弹框内画echarts图dom元素无法获取的问题
  • 原文地址:https://www.cnblogs.com/ElvinLong/p/4510501.html
Copyright © 2011-2022 走看看