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 相关文章推荐
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
Oct 17 Javascript
uploadify 3.0 详细使用说明
Jun 18 Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
Dec 12 Javascript
AngularJS基础 ng-readonly 指令简单示例
Aug 02 Javascript
jQuery操作cookie
Aug 08 Javascript
AngularJS 单选框及多选框的双向动态绑定
Apr 20 Javascript
jQuery上传插件webupload使用方法
Aug 01 jQuery
js中的面向对象之对象常见创建方法详解
Dec 16 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
Mar 06 Javascript
微信小程序仿通讯录功能
Apr 09 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
Sep 21 Javascript
vue3为什么要用proxy替代defineProperty
Oct 19 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
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
php页面防重复提交方法总结
2013/11/25 PHP
C++中的string类的用法小结
2015/08/07 Javascript
js强制把网址设为默认首页
2015/09/29 Javascript
基于JavaScript实现文字超出部分隐藏
2016/02/29 Javascript
jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
2016/06/12 Javascript
jQuery1.9+中删除了live以后的替代方法
2016/06/17 Javascript
JQuery控制图片由中心点逐渐放大效果
2016/06/26 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
js图片延迟加载(Lazyload)三种实现方式
2017/03/01 Javascript
浅谈js中的this问题
2017/08/31 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
总结js中的一些兼容性易错的问题
2017/12/18 Javascript
实例学习JavaScript读取和写入cookie
2018/01/29 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
vue使用中的内存泄漏【推荐】
2018/07/10 Javascript
如何使用puppet替换文件中的string
2018/12/06 Javascript
详解vue中的父子传值双向绑定及数据更新问题
2019/06/13 Javascript
[56:46]Liquid vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
Python检查和同步本地时间(北京时间)的实现方法
2018/12/03 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
python简单实现AES加密和解密
2019/03/28 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
德国箱包网上商店:koffer24.de
2016/07/27 全球购物
智能钱包:Ekster
2019/11/21 全球购物
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
安全协议书
2014/04/23 职场文书
铁路安全事故反思
2014/04/26 职场文书
运动会入场词
2015/07/18 职场文书
校园安全主题班会
2015/08/12 职场文书
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android