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 的 trim 函数的代码
Aug 13 Javascript
Ajax,UTF-8还是GB2312 eval 还是execScript
Nov 13 Javascript
页面中iframe相互传值传参
Dec 13 Javascript
Extjs grid panel自带滚动条失效的解决方法
Sep 11 Javascript
微信小程序 本地数据读取实例
Apr 27 Javascript
element-ui多文件上传的实现示例
Apr 10 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
Jun 13 Javascript
详解基于Vue/React项目的移动端适配方案
Aug 23 Javascript
vue3实现v-model原理详解
Oct 09 Javascript
JS实现页面数据懒加载
Feb 13 Javascript
微信小程序实现音乐播放页面布局
Dec 11 Javascript
vue实现一个获取按键展示快捷键效果的Input组件
Jan 13 Vue.js
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&amp;&amp;mysql)三
2006/10/09 PHP
MySQL 日期时间函数常用总结
2012/06/12 PHP
php使用百度天气接口示例
2014/04/22 PHP
解决CodeIgniter伪静态失效
2014/06/09 PHP
PHP实现的分解质因数操作示例
2018/08/01 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
2020/08/26 PHP
得到文本框选中的文字,动态插入文字的js代码
2007/03/07 Javascript
javascript最常用与实用的创建类的代码
2010/08/12 Javascript
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
图片img的src不变让浏览器重新加载实现方法
2013/03/29 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
JS基于VML技术实现的五角星礼花效果代码
2015/10/26 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
PHP获取当前页面完整URL的方法
2016/12/02 Javascript
AngularJS开发教程之控制器之间的通信方法分析
2016/12/25 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
javascript关于“时间”的一次探索
2019/07/24 Javascript
vue 解决异步数据更新问题
2019/10/29 Javascript
用云开发Cloudbase实现小程序多图片内容安全监测的代码详解
2020/06/07 Javascript
对numpy 数组和矩阵的乘法的进一步理解
2018/04/04 Python
Django基础知识 URL路由系统详解
2019/07/18 Python
卡骆驰英国官网:Crocs英国
2019/08/22 全球购物
Envie de Fraise意大利:法国网上推出的孕妇装品牌
2020/10/18 全球购物
领导干部廉政自律承诺书
2014/05/26 职场文书
建筑横幅标语
2014/10/09 职场文书
欢迎词怎么写
2015/01/23 职场文书
法务专员岗位职责
2015/02/14 职场文书
社会主义核心价值观主题教育活动总结
2015/05/07 职场文书
2016年社会主义核心价值观心得体会
2016/01/21 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
springboot使用Redis作缓存使用入门教程
2021/07/25 Redis
redis数据结构之压缩列表
2022/03/21 Redis