zoukankan      html  css  js  c++  java
  • 原创,真正解决iframe高度自适应的问题.兼容各浏览器

         在Google输入关键字"iframe自适应高度"之后你会发现有"找到约 153,000 条结果",我大概的看了一下,发现基本上就那两三篇文章被转载来转载去.真正解决问题的没有.那我今天就不和他们同流合污了,经过我的深入研究和各种尝试最终找到了解决办法,分享给大家.
         解决高度自适应的问题有两种办法:
         方法一,在每个被包含页在本身内容加载完毕之后,执行JS取得本页面的高度,然后去同步父页面的iframe高度。这个做法很扯淡,因為需要在每个被包含页都要去加入一段相同的JS代码来做这个事情,创建了好多副本,想像一下假如我们在自己的框架内包含的是www.baidu.com呢,這種做法打死也實現不了.

         方法二,在主页面 iframe的onload事件中执行JS,去取得被包含页的高度内容,然后去同步高度。這才是我們今天所需要研究的方法。

         以上的方法都只处理了静的东西,就是只在内容加载的时候执行,如果JS去操作DOM引起的高度变化,此時就需要再次進行同步一次才能確保高度適應.
    有人会说这样就可以了:可這樣沒辦法在我們靜態修改iframe的src值之后再次同步高度.
    <iframe id="iFrame1" name="iFrame1" width="100%" onload="this.height=iFrame1.document.body.scrollHeight" frameborder="0" src="index.htm"></iframe>


    下邊是我使用jquery寫的實現方法,为了照顾IE这头不合群的倔驴,所以下边的代码单独照顾了一下他:

    <script src='img/jquery-1.6.1.min.js'></script>
    <script type='text/javascript'>
    (function($){
        //讓iframe自適應高度欢迎转载但请注明出处Email:See7di@Gmail.com,Seven的部落格http://hi.baidu.com/see7di/home
        $.AutoiFrame = function(_o){
            var _o_=new Function("return "+_o)();
            if($.browser.msie){
                $('#'+_o).ready(function(){$('#'+_o).height(_o_.document.body.scrollHeight)});
            }else{
                $('#'+_o).load(function(){$('#'+_o).height(_o_.document.body.scrollHeight)});
            }
        }
    })(jQuery);
    $(function(){
        $.AutoiFrame('f_1');
    });欢迎转载但请注明出处Email:See7di@Gmail.com,Seven的部落格http://hi.baidu.com/see7di/home

    </script>

    上邊的代碼就可以實現在頁面載入的時候自動修正iframe的高度,讓其高度自適應,那如果我們打開頁面之後再次修改了iframe內的src怎麼同步呢?方法看下邊:

    <input onclick="$.AutoiFrame('f_1')" value="....

    或者如果你感覺這樣太麻煩,沒關係我們還有解決方法,那你就用setInterval吧,他可以定時循環執行,即間隔多長時間執行一次.

    window.setInterval(function(){$.AutoiFrame('f_1')},100);//延迟100毫秒循环執行一次
    這樣一來保證讓你的iframe乖乖的,且會服服帖帖,想怎麼整治都行了,哦,顺便说一下如果你感兴趣的是iframe的宽度而非iframe高度那么其解决思路是一样的,照着葫芦画个瓢就行了.

  • 相关阅读:
    linux下创建一个指定大小的文件
    批量替换多个文件中的字符串
    redhat 搭建yum 源
    python ConfigParser 模块
    python yaml 模块
    python xml文件处理
    py2exe 和pyinstaller打包
    wxpython 学习之 --threading
    wxpython 学习之 --文本框与Boxsizer布局管理器
    wxpython 学习之 --窗口分割
  • 原文地址:https://www.cnblogs.com/see7di/p/2239685.html
Copyright © 2011-2022 走看看