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 相关文章推荐
使用jQuery.fn自定义jQuery翻页插件
Jan 20 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
Jan 18 Javascript
javascript中Date对象的使用总结
Nov 21 Javascript
canvas滤镜效果实现代码
Feb 06 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
Feb 17 Javascript
Vue实现typeahead组件功能(非常靠谱)
Aug 26 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
Mar 06 jQuery
Vue-input框checkbox强制刷新问题
Apr 18 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
Jul 28 Javascript
JavaScript实现多文件下载方法解析
Aug 07 Javascript
探索node之事件循环的实现
Oct 30 Javascript
jquery插件实现搜索历史
Apr 24 jQuery
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 while循环得到循环次数
2013/10/26 PHP
PHP数组操作――获取数组最后一个值的方法
2015/04/14 PHP
laravel 解决路由除了根目录其他都404的问题
2019/10/18 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
JS TextArea字符串长度限制代码集合
2012/10/31 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
两种不同的方法实现js对checkbox进行全选和反选
2014/05/13 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
JQuery仿小米手机抢购页面倒计时效果
2014/12/16 Javascript
对于jQuery性能的一些优化建议
2015/08/13 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
Javascript中的作用域及块级作用域
2017/12/08 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
vue-列表下详情的展开与折叠案例
2020/07/28 Javascript
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
举例讲解Python中的算数运算符的用法
2015/05/13 Python
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
2019/08/30 Python
Python编程快速上手——Excel表格创建乘法表案例分析
2020/02/28 Python
django xadmin action兼容自定义model权限教程
2020/03/30 Python
Python3爬虫发送请求的知识点实例
2020/07/30 Python
Python尾递归优化实现代码及原理详解
2020/10/09 Python
python Tornado框架的使用示例
2020/10/19 Python
Java中实现多态的机制
2015/08/09 面试题
《欢乐的泼水节》教学反思
2014/04/22 职场文书
参赛口号
2014/06/16 职场文书
环卫处个人工作总结
2015/03/04 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
社区艾滋病宣传活动总结
2015/05/07 职场文书
早上好问候语大全
2015/11/10 职场文书
关于golang高并发的实现与注意事项说明
2021/05/08 Golang