JS实现iframe自适应高度的方法(兼容IE与FireFox)


Posted in Javascript onJune 24, 2016

本文实例讲述了JS实现iframe自适应高度的方法。分享给大家供大家参考,具体如下:

之前一直被iframe自适应高度的问题困扰,很多JS代码在FF里面似乎就变成哑巴了。后来下面这段代码终于被我从万千号称兼容FF的代码堆中翻了出来。我已经用过了,真的好用。尤其是对于我这样的JS水平较低(真不好意思)的人来说,这段代码简单易懂,方便修改,只要把下面的代码复制粘贴到iframe所在页面的<body>标签里面,并且修改一下ID名就行了(注意,要修改的地方有两个,位置在代码中有说明)。

向原创这段代码的朋友致敬。

步骤1:在<body>标签下先输入如下JS代码

<scriptlanguage="javascript">
function adjustFrameSize()
{
  var frm = document.getElementById("iframe1"); //将iframe1替换为你的ID名
  var subWeb = document.frames ? document.frames["iframe1"].document : frm.contentDocument;
  if(frm != null && subWeb !=null)
  {
   frm.style.height="0px";//初始化一下,否则会保留大页面高度
   frm.style.height = subWeb.documentElement.scrollHeight+"px";
   frm.style.width = subWeb.documentElement.scrollWidth+"px";
   subWeb.body.style.overflowX="auto";
   subWeb.body.style.overflowY="auto";
  }
}
</script>

步骤2:在iframe标签中加上id="iframe1"onload="adjustFrameSize()"

例如:

<iframe id="iframe1"onload="adjustFrameSize()" scrolling="no" src="iframe1.html"width="100%" height="300px" target="_self"frameborder="0"></iframe>

这段代码有一个小小的缺点,就是使用后iframe中的内容和外边框(如果存在外边框的话)的距离有点小,可以自己适当调整一下;另外,除IE6.0以上版本和FF以外没有测试过其它浏览器,除此之外尚未发现别的缺陷,如果在使用中发现了问题或者有更好解决方法的童鞋欢迎来分享一下。

如果在iframe页面内部含有ajax加载的页面或者通过js动态去添加内容导致iframe高度变化的情况,可以添加一下方式进行:

1:子页面添加以下内容

//修改父窗口地址
function changeHeight(){
window.top.location.hash = "#height=" + $(document).height();
}

修改dom的部分调用该方法

2:父页面添加

//高度自适应
var iframe = document.getElementById("iframe1");
function iframeHeight() {
  var hash = window.location.hash.slice(1), h;
  if (hash && /height=/.test(hash)) {
    h = hash.replace("height=", "");
    iframe.style.height = h+"px";
    window.location.hash = "#temp";//防止点击其他页面时高度不变
  }
  setTimeout(iframeHeight, 100);
}
iframeHeight();

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
Feb 04 Javascript
javascript 数据类型转换(parseInt,parseFloat)
Jul 20 Javascript
JavaScript实现简单Tip提示框效果
Apr 20 Javascript
JS正则子匹配实例分析
Dec 22 Javascript
vue实现简单表格组件实例详解
Apr 16 Javascript
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
Jun 25 Javascript
EasyUI实现下拉框多选功能
Nov 07 Javascript
详解Chai.js断言库API中文文档
Jan 31 Javascript
javaScript实现游戏倒计时功能
Nov 17 Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
Apr 04 Javascript
JS随机密码生成算法
Sep 23 Javascript
什么是SOLID
Mar 24 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
Jun 24 #Javascript
老生常谈 关于JavaScript的类的继承
Jun 24 #Javascript
js动态获取子复选项并设计全选及提交的实现方法
Jun 24 #Javascript
EasyUI在表单提交之前进行验证的实例代码
Jun 24 #Javascript
正则表达式(语法篇推荐)
Jun 24 #Javascript
javascript弹出窗口中增加确定取消按钮
Jun 24 #Javascript
javascript类型系统_正则表达式RegExp类型详解
Jun 24 #Javascript
You might like
如何过滤高亮显示非法字符
2006/10/09 PHP
php empty() 检查一个变量是否为空
2011/11/10 PHP
需要注意的几个PHP漏洞小结
2012/02/05 PHP
PHP之生成GIF动画的实现方法
2013/06/07 PHP
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
Yii实现的多级联动下拉菜单
2016/07/13 PHP
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
js中事件的处理与浏览器对象示例介绍
2013/11/29 Javascript
在jquery中的ajax方法怎样通过JSONP进行远程调用
2014/04/04 Javascript
javascript数字时钟示例分享
2014/04/23 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
2015/03/04 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
2015/09/05 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
2016/08/20 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
2017/12/24 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
小程序采集录音并上传到后台
2019/11/22 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
2020/05/09 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
python 实现归并排序算法
2012/06/05 Python
Python3中简单的文件操作及两个简单小实例分享
2017/06/18 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
2020/03/06 Python
Python爬虫入门教程01之爬取豆瓣Top电影
2021/01/24 Python
Discard Protocol抛弃协议的作用是什么
2015/10/10 面试题
护士自我鉴定范文
2013/10/06 职场文书
经济信息系毕业生自荐信范文
2014/03/15 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
个人廉政承诺书
2015/04/28 职场文书
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis
实现一个简单得数据响应系统
2021/11/11 Javascript
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js