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 相关文章推荐
js AspxButton的客户端操作
Jun 26 Javascript
window.ActiveXObject使用说明
Nov 08 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
Sep 27 Javascript
Javascript面向对象扩展库代码分享
Mar 27 Javascript
jQuery源码解读之addClass()方法分析
Feb 20 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
Mar 28 Javascript
深入理解ECMAScript的几个关键语句
Jun 01 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
Jul 20 Javascript
MVVM框架下实现分页功能示例
Jun 14 Javascript
基于Vue+element-ui 的Table二次封装的实现
Jul 20 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
Feb 12 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
Oct 09 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中鲜为人知的10个函数
2014/02/28 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
js相册效果代码(点击创建即可)
2013/04/16 Javascript
解析js如何获取当前url中的参数值并复制给input
2013/06/23 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
ExpressJS入门实例
2015/01/14 Javascript
文字垂直滚动之javascript代码
2015/07/29 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
js图片跟随鼠标移动代码
2015/11/26 Javascript
jQuery遮罩层实现方法实例详解(附遮罩层插件)
2015/12/08 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
vue使用vue-cli快速创建工程
2017/07/28 Javascript
MVVM框架下实现分页功能示例
2018/06/14 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
解决Element中el-date-picker组件不回填的情况
2020/11/07 Javascript
vue点击Dashboard不同内容 跳转到同一表格的实例
2020/11/13 Javascript
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
新加坡交友网站:be2新加坡
2019/04/10 全球购物
股权转让协议书
2014/12/07 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
周一问候语大全
2015/11/10 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js
python 中的jieba分词库
2021/11/23 Python