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添加重载函数的辅助方法
Jul 04 Javascript
JS读取cookies信息(记录用户名)
Jan 10 Javascript
jQuery:节点(插入,复制,替换,删除)操作
Mar 04 Javascript
JavaScript定时器详解及实例
Aug 01 Javascript
基于jQuery实现的美观星级评论打分组件代码
Oct 30 Javascript
jQuery实现右键菜单、遮罩等效果代码
Sep 27 Javascript
原生javascript实现的ajax异步封装功能示例
Nov 03 Javascript
Node.js查找当前目录下文件夹实例代码
Mar 07 Javascript
Vue常用指令V-model用法
Mar 08 Javascript
微信小程序登录态控制深入分析
Apr 12 Javascript
解决Vue不能检测数组或对象变动的问题
Feb 24 Javascript
React Hooks 实现和由来以及解决的问题详解
Jan 17 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 远程文件管理,可以给表格排序,遍历目录,时间排序
2009/08/07 PHP
ThinkPHP模板IF标签用法详解
2014/07/01 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
javascript Discuz代码中的msn聊天小功能
2008/05/25 Javascript
javascript中的prototype属性实例分析说明
2010/08/09 Javascript
JavaScript动态改变HTML页面元素例如添加或删除
2014/08/10 Javascript
浅谈JS日期(Date)处理函数
2014/12/07 Javascript
jquery获取点击控件的绝对位置简单实例
2016/10/13 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
Bootstarp在pycharm中的安装及简单的使用方法
2019/04/19 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
2020/07/19 Javascript
给Python IDLE加上自动补全和历史功能
2014/11/30 Python
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
python实现指定ip端口扫描方式
2019/12/17 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
浅析Python迭代器的高级用法
2020/07/16 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
Anaconda详细安装步骤图文教程
2020/11/12 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
本科生个人求职自荐信
2013/09/26 职场文书
尽职尽责村干部自我鉴定
2014/01/23 职场文书
见习期自我鉴定
2014/01/31 职场文书
建筑工地门卫岗位职责
2014/04/30 职场文书
项目建议书
2015/02/04 职场文书
2014年个人总结范文
2015/03/09 职场文书
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS
python如何获取网络数据
2021/04/11 Python
详解MySQL数据库千万级数据查询和存储
2021/05/18 MySQL
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL
TypeScript 内置高级类型编程示例
2022/09/23 Javascript