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 相关文章推荐
用示例说明filter()与find()的用法以及children()与find()的区别分析
Apr 26 Javascript
Js Jquery创建一个弹出层可加载一个页面
May 08 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
Sep 26 Javascript
JS组件Bootstrap Select2使用方法详解
Apr 17 Javascript
Javascript设计模式之装饰者模式详解篇
Jan 17 Javascript
提高JavaScript执行效率的23个实用技巧
Mar 01 Javascript
js实现前端图片上传即时预览功能
Aug 02 Javascript
Vue中div contenteditable 的光标定位方法
Aug 25 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
Sep 13 Javascript
bootstrap table列和表头对不齐的解决方法
Jul 19 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
Dec 24 Javascript
Js视频播放器插件Video.js使用方法详解
Feb 04 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带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
php不使用copy()函数复制文件的方法
2015/03/13 PHP
phpinfo的知识点总结
2019/10/10 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
window.location.hash 属性使用说明
2010/03/20 Javascript
JavaScript 对象链式操作测试代码
2010/04/25 Javascript
js使下拉列表框可编辑不止是选择
2013/12/12 Javascript
给easyui datebox扩展一个清空的实例
2016/11/09 Javascript
BootStrap Tooltip插件源码解析
2016/12/27 Javascript
教你用十行node.js代码读取docx的文本
2017/03/08 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
JavaScript中双向数据绑定详解
2017/05/03 Javascript
vue-scroller记录滚动位置的示例代码
2018/01/17 Javascript
vue数据传递--我有特殊的实现技巧
2018/03/20 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
2018/12/20 Javascript
VUE简单的定时器实时刷新的实现方法
2019/01/20 Javascript
python生成器,可迭代对象,迭代器区别和联系
2018/02/04 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
2019/07/15 Python
利用keras加载训练好的.H5文件,并实现预测图片
2020/01/24 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
python实现扑克牌交互式界面发牌程序
2020/04/22 Python
HTML5实现无刷新修改URL的方法
2019/11/14 HTML / CSS
巴西最大的家具及装饰用品店:Mobly
2017/10/11 全球购物
Ralph Lauren法国官网:美国高品味时装品牌
2017/12/08 全球购物
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
学校卫生检查制度
2014/02/03 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
七一建党节慰问信
2015/02/14 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
2015秋学期开学寄语
2015/05/28 职场文书
Java基础-封装和继承
2021/07/02 Java/Android
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
2021/08/02 MySQL