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中的array数组使用技巧
Jan 31 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
Jun 23 Javascript
JavaScript 对象字面量讲解
Jun 06 Javascript
初识简单却不失优雅的Vue.js
Sep 12 Javascript
Jquery 整理元素选取、常用方法一览表
Nov 26 Javascript
脚本div实现拖放功能(两种)
Feb 13 Javascript
jquery获取select,option所有的value和text的实例
Mar 06 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
Mar 14 Javascript
vue-cli3 DllPlugin 提取公用库的方法
Apr 24 Javascript
elementUI 动态生成几行几列的方法示例
Jul 11 Javascript
Vue数字输入框组件的使用方法
Oct 19 Javascript
vue单文件组件无法获取$refs的问题
Jun 24 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中将网址转换为超链接的函数
2011/09/02 PHP
php中mysql操作buffer用法详解
2015/03/19 PHP
使用ThinkPHP生成缩略图及显示
2017/04/27 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
laravel orm 关联条件查询代码
2019/10/21 PHP
js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
2013/01/24 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
jQuery简单实现tab选项卡切换效果
2016/06/20 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
Vue通过input筛选数据
2020/10/26 Javascript
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
详解如何使用router-link对象方式传递参数?
2019/05/02 Javascript
ES6函数实现排它两种写法解析
2020/05/13 Javascript
Vue+axios封装请求实现前后端分离
2020/10/23 Javascript
Jquery Fade用法详解
2020/11/06 jQuery
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
[56:01]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 Effect vs EG
2018/03/31 DOTA
[04:16]DOTA2全国高校联赛16强抽签
2018/05/02 DOTA
[04:22]DOTA2大事件之护国神翼
2020/08/14 DOTA
[43:03]完美世界DOTA2联赛PWL S2 PXG vs Magma 第二场 11.21
2020/11/24 DOTA
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
2021/02/24 Python
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
 Alo Yoga官网:购买瑜伽服装
2018/06/17 全球购物
PatPat香港:婴童服饰和亲子全家装在线购物
2020/09/27 全球购物
毕业生求职自荐信怎么写
2014/01/08 职场文书
毕业典礼演讲稿
2014/05/13 职场文书
演讲稿的写法
2014/05/19 职场文书
小学生环保标语
2014/06/13 职场文书
旅游活动总结
2014/08/27 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python