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写的select支持上下键、首字母筛选以及回车取值的功能
Sep 09 Javascript
理解Javascript_09_Function与Object
Oct 16 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
Jun 14 Javascript
javascript获取作用在元素上面的样式属性代码
Sep 20 Javascript
javascript的offset、client、scroll使用方法详解
Dec 25 Javascript
JQuery的Ajax跨域请求原理概述及实例
Apr 26 Javascript
jQuery中size()方法用法实例
Dec 27 Javascript
在父页面得到zTree已选中的节点的方法
Feb 12 Javascript
微信小程序 点击控件后选中其它反选实例详解
Feb 21 Javascript
Mongoose实现虚拟字段查询的方法详解
Aug 15 Javascript
vue 项目地址去掉 #的方法
Oct 20 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
Jun 02 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
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
php字符串截取函数mb_substr用法实例分析
2019/06/25 PHP
克隆javascript对象的三个方法小结
2011/01/12 Javascript
重载toString实现JS HashMap分析
2011/03/13 Javascript
javascript parseInt() 函数的进制转换注意细节
2013/01/08 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
2014/06/06 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
概述如何实现一个简单的浏览器端js模块加载器
2016/12/07 Javascript
vue修改vue项目运行端口号的方法
2017/08/04 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
使用typescript开发angular模块并发布npm包
2018/04/19 Javascript
vue开发拖拽进度条滑动组件
2019/09/21 Javascript
javascript实现贪吃蛇小练习
2020/07/05 Javascript
JS中循环遍历数组的四种方式总结
2021/01/23 Javascript
linecache模块加载和缓存文件内容详解
2018/01/11 Python
python导出hive数据表的schema实例代码
2018/01/22 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
详解python tkinter教程-事件绑定
2019/03/28 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
Python的scikit-image模块实例讲解
2020/12/30 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
2021/03/04 Python
快速实现一个简单的canvas迷宫游戏的示例
2018/07/04 HTML / CSS
Kathmandu澳洲户外商店:新西兰户外运动品牌
2017/11/12 全球购物
英国羊绒服装购物网站:Pure Collection
2018/10/22 全球购物
助人为乐表扬信范文
2014/01/14 职场文书
幼儿园教师培训制度
2014/01/16 职场文书
四年大学生活的自我评价范文
2014/02/07 职场文书
2014年十一国庆节爱国演讲稿
2014/09/23 职场文书
导游词格式
2015/02/13 职场文书
2016猴年春节问候语
2015/11/11 职场文书
Python函数中apply、map、applymap的区别
2021/11/27 Python