iframe高度动态自适应,一直是个头疼的问题,今天我们从事件监听这个角度,来实现iframe高度实时更新。

方案一:监听iframe体的点击事件

<iframe src="cascade.jsp" onload="addEvt(this)"></iframe>
function addEvt(ifm){
var addHeight = function(ifmObj){
if(ifmObj){ }else{ return; }
var win = ifmObj.contentWindow,
doc = win.document,
       body = doc.body,
html = doc.documentElement,
height = html.offsetHeight;

       $.each(body.childNodes,function(index,node){/* 迭代所有可见元素高度累加 */
          var domHeight = node.offsetHeight || 0;
          if(index == 0) height = domHeight;
          else height += domHeight;
       });

            $(ifmObj).height(height);
}
var doc=ifm.contentWindow.document;
doc.onclick=function(){
addHeight(ifm);
}
addHeight(ifm);
$(ifm).css({width:'100%',border:0}).attr("scrolling","no");/*设置无边框和滚动条*/
setTimeout(function(){$(doc).trigger("click");},1000);
}

方案二:监听iframe的滚动事件

<iframe class="autoHeight" src="cascade.jsp"></iframe>
$(function(){
bindIfmScroll();
});
function bindIfmScroll(){
var addHeight = function(ifm){
if(ifm){ }else{ return; }
var win = ifm.contentWindow,
doc = win.document,
html = doc.documentElement,
body = doc.body;
var height = Math.max( //body.scrollHeight,
//body.offsetHeight,html.clientHeight,
//html.scrollHeight,
html.offsetHeight
);
$(ifm).height(height);
}
var ifms = $("iframe.autoHeight"); /*自动检索class为‘autoHeight’的iframe*/
     ifms.css({width:'100%',border:0}).attr("scrolling","no");/*设置无边框和滚动条*/
ifms.each(function(){
var ifmObj = this;
$(ifmObj.contentWindow).scroll(function() {
addHeight(ifmObj);
});
});
}

试验之后,方案一更好些。以上仅供参考,列位如果有更好方案希望能分享出来o(^▽^)o

iframe高度自适应实现方案的更多相关文章

  1. 完美实现跨域Iframe高度自适应【Iframe跨域高度自适应解决方案】

    Iframe的强大功能偶就不多说了,它不但被开发人员经常运用,而且黑客们也常常使用它,总之用过的人知道它的强大之处,但是Iframe有个致命的“BUG”就是iframe的高度无法自动适应,这一点让很多 ...

  2. CSS完美实现iframe高度自适应(支持跨域)

    Iframe的强大功能偶就不多说了,它不但被开发人员经常运用,而且黑客们也常常使用它,总之用过的人知道它的强大之处,但是Iframe有个致命的"BUG"就是iframe的高度无法自 ...

  3. Iframe高度自适应(兼容IE/Firefox、同域/跨域)

    在实际的项目进行中,很多地方可能由于历史原因不得不去使用iframe,包括目前正火热的应用开发也是如此. 随之而来的就是在实际使用iframe中,会遇到iframe高度的问题,由于被嵌套的页面长度不固 ...

  4. iframe高度自适应(同域)

    今天解决了iframe高度自适应的问题,不过这只是同域下的页面嵌入,以下是代码: function SetCwinHeight(){ var iframeid = document.getElemen ...

  5. iframe高度自适应

    前两天在网上看到了一道面试题,问iframe高度自适应的问题.发现自己之前几乎没有关注过iframe的问题,所以在这里记录一下. 原题目是: 页面A的域名是:http://www.taobao.com ...

  6. iframe高度自适应内容

    JS自适应高度,其实就是设置iframe的高度,使其等于内嵌网页的高度,从而看不出来滚动条和嵌套痕迹.对于用户体验和网站美观起着重要作用. 如果内容是固定的,那么我们可以通过CSS来给它直接定义一个高 ...

  7. IFrame 高度自适应的两种方式 .

    iframe 高度自适应一般是指: iframe 本身的高度 =  内容高度. 这样做可以使最外层不出现滚动条. 如果网页内容使用了Ajax方式填充内容的话. 由于内容是动态的. 以上方式应该变为: ...

  8. 兼容firefox的iframe高度自适应代码

    网上关于iframe高度自适应的代码有很多,但比较杂乱,本文根据实用性整理了以下代码: JavaScript部分: 折叠JavaScript Code复制内容到剪贴板 <script type= ...

  9. 跨域iframe高度自适应(兼容IE/FF/OP/Chrome)

    采用JavaScript来控制iframe元素的高度是iframe高度自适应的关键,同时由于JavaScript对不同域名下权限的控制,引发出同域.跨域两种情况. 由于客户端js使用浏览器的同源安全策 ...

随机推荐

  1. linus上运行jar包文件增删查

    package com.osplat.util; import com.alibaba.fastjson.JSON; import com.osplat.bean.Resultmodel; impor ...

  2. NO_DATA_FOUND ORACL NVL函数,当第一个为空时显示第二个参数值

    ORA-01403: no data foundORA-06512: at "STG.SAP_SO_QM_CUSTOMER_ADDBOM", line 50 NVL函数的格式如下: ...

  3. js中switch/case分支的值可以是变量或表达式

    在一些高级语言如C#中,switch分支的值只能是常量,而js中可以是变量或表达式: <!DOCTYPE html> <html lang="en"> &l ...

  4. 解决在linux环境安装setuptools的相关错误

    RuntimeError: Compression requires the (missing) zlib module 缺少zlib包 解决方案     yum install zlib yum i ...

  5. weechat 常用指令

    添加服务器: /server add freenode irc.freenode.org 设置nick: /set irc.server.freenode.nicks "mynick,myn ...

  6. Python+Selenium学习--alert/confirm/prompt 处理

    场景 webdriver 中处理JavaScript 所生成的alert.confirm 以及prompt 是很简单的.具体思路是使用switch_to.alert()方法定位到alert/confi ...

  7. Kylin Cube构建过程优化

    原文地址:https://kylin.apache.org/docs16/howto/howto_optimize_build.html Kylin将一个cube的build过程分解为若干个子步骤,然 ...

  8. 联想G510安装win7系统

    1.插入系统盘重启(要按Fn+f12) 2默认下一步 3.选择自定义 4.选择需要将系统安装到的分区,格式化,然后下一步 5.默认下一步 安装到这里就成功了 6.问题处理: 第4步时出现 Window ...

  9. swift - xcode - pod升级版本和降级版本

    1. 查看当前版本 pod --version 2.如果安装过pod,更新命令 新版 sudo gem install -n /usr/local/bin cocoapods --pre 旧版 sud ...

  10. 31-mysql 代码建立数据库

    给个例子,模仿即可: drop database if exists tt; create database tt default character set utf8; use tt; create ...