js实现的真正的iframe高度自适应(兼容IE,FF,Opera)


Posted in Javascript onMarch 07, 2010

找到了下面这个js

function SetCwinHeight(obj) 
{ 
var cwin=obj; 
if (document.getElementById) 
{ 
if (cwin && !window.opera) 
{ 
if (cwin.contentDocument && cwin.contentDocument.body.offsetHeight) 
cwin.height = cwin.contentDocument.body.offsetHeight + 20; 
else if(cwin.Document && cwin.Document.body.scrollHeight) 
cwin.height = cwin.Document.body.scrollHeight + 10; 
} 
} 
}

然后……
进入了测试过程(调用很简单,先略过)
1.IE ---通过 但是高度还是有稍微的差距,很小,滚动条还在
2.FF --- 通过 与IE一样,有小差距
3.Opera --- 看那个JS的条件就知道,通不过的
但主流浏览器至少要通过这三项撒!!!
于是,还是Google
搜索 各浏览器在处理 document.scrollHeight 或者 offsetHeigth时的特殊现象
发现,Opera浏览器在处理iframe内容的时候,用的是contentWindow
而处理内容高度的时候,却与IE一致
从而,有了下面这段js
<html> 
<head> 
<script> 
function SetCwinHeight(obj) 
{ 
var cwin=obj; 
if (document.getElementById) 
{ 
if (cwin && !window.opera) 
{ 
if (cwin.contentDocument && cwin.contentDocument.body.offsetHeight) 
cwin.height = cwin.contentDocument.body.offsetHeight + 20; //FF NS 
else if(cwin.Document && cwin.Document.body.scrollHeight) 
cwin.height = cwin.Document.body.scrollHeight + 10;//IE 
} 
else 
{ 
if(cwin.contentWindow.document && cwin.contentWindow.document.body.scrollHeight) 
cwin.height = cwin.contentWindow.document.body.scrollHeight;//Opera 
} 
} 
} 
</script> 
</head> 
<body> 
<iframe src="20103622440.html" onload="SetCwinHeight(this);" width="600px"> 
</body> 
</html>

这样一来,总算把这三个浏览器给适应了
做为程序员,还是要细心点
再测试一下
OK...3个浏览器均正常显示,也无iframe的纵向滚动条了
Javascript 相关文章推荐
js动态在form上插入enctype=multipart/form-data的问题
May 24 Javascript
JS执行删除前的判断代码
Feb 18 Javascript
js操作iframe父子窗体示例
May 22 Javascript
同一个网页中实现多个JavaScript特效的方法
Feb 02 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
Jan 29 Javascript
基于angularjs实现图片放大镜效果
Aug 31 Javascript
jQuery查找节点方法完整实例
Sep 13 Javascript
JavaScript事件处理程序详解
Sep 19 Javascript
JS返回页面时自动回滚到历史浏览位置
Sep 26 Javascript
详解Vue中watch的详细用法
Nov 28 Javascript
vue登录页面cookie的使用及页面跳转代码
Jul 10 Javascript
在Vue里如何把网页的数据导出到Excel的方法
Sep 30 Javascript
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
Mar 05 #Javascript
Jquery Validation插件防止重复提交表单的解决方法
Mar 05 #Javascript
javascript下判断一个元素是否存在的代码
Mar 05 #Javascript
ExtJs扩展之GroupPropertyGrid代码
Mar 05 #Javascript
js 获取服务器控件值的代码
Mar 05 #Javascript
jquery checkbox全选、取消全选实现代码
Mar 05 #Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
Mar 05 #Javascript
You might like
星际争霸中的热键
2020/03/04 星际争霸
基于PHP常用字符串的总结(待续)
2013/06/07 PHP
分享一个php 的异常处理程序
2014/06/22 PHP
PHP购物车类Cart.class.php定义与用法示例
2016/07/20 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
2018/08/06 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
JS Timing
2007/04/21 Javascript
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
JS取request值以及自动执行使用示例
2014/02/24 Javascript
快速学习jQuery插件 Form表单插件使用方法
2015/12/01 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
2015/12/31 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
2016/09/14 Javascript
关于angularJs指令的Scope(作用域)介绍
2016/10/25 Javascript
JS中位置与大小的获取方法
2016/11/22 Javascript
COM组件中调用JavaScript函数详解及实例
2017/02/23 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
JS函数进阶之继承用法实例分析
2020/01/15 Javascript
通过实例解析chrome如何在mac环境中安装vue-devtools插件
2020/07/10 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
[18:32]DOTA2 HEROS教学视频教你分分钟做大人-谜团
2014/06/12 DOTA
[05:13]TI4 中国战队 机场出征!!
2014/07/07 DOTA
python 处理dataframe中的时间字段方法
2018/04/10 Python
pow在python中的含义及用法
2019/07/11 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
2019/09/15 Python
线程的基本概念、线程的基本状态以及状态之间的关系
2012/10/26 面试题
应届生.NET方向面试题
2015/05/23 面试题
类和结构的区别
2012/08/15 面试题
医科学校毕业生自荐信
2013/11/09 职场文书
电力安全学习心得体会
2016/01/18 职场文书
redis内存空间效率问题的深入探究
2021/05/17 Redis
Python OpenCV超详细讲解基本功能
2022/04/02 Python
解决Python保存文件名太长OSError: [Errno 36] File name too long
2022/05/11 Python