JavaScript 处理Iframe自适应高度(同或不同域名下)


Posted in Javascript onMarch 29, 2013

1.同域名下Iframe自适应高度的处理

<iframe onload="Javascript:SetIFrameHeight(this)" src="../Home/b" id="win" name="win" width="100%" height="1"> </iframe>

当然此处我用的是Asp.Net MVC 此处src设置为路由结构
<script type="text/javascript"> 
function SetIFrameHeight(obj) { 
var win = obj; 
if (document.getElementById) { 
if (win && !window.opera) { 
if (win.contentDocument && win.contentDocument.body.offsetHeight) 
win.height = win.contentDocument.body.offsetHeight; 
else if (win.Document && win.Document.body.scrollHeight) 
win.height = win.Document.body.scrollHeight; 
} 
} 
} 
</script>

用到的就是iframe嵌套的页面加载完毕的时候,运用onload事件来获取嵌套在iframe中网页的高度,然后赋值给Iframe的高度即可。
2.跨域时Iframe高度自适应
在主页面和被嵌套的iframe为不同域名的时候,就稍微麻烦一些,需要避开JavaScript的跨域限制。 
原理:现有iframe主页面main.html、被iframe嵌套页面iframe.html、iframe中介页面agent.html三个,通过main.html(域名为http://www.ccvita.com)嵌套iframe.html(域名为:http://www.phpq.net),当用户浏览时执行iframe.html中的JavaScript代码设置iframeC的scr地址中加入iframe页面的高度,agent.html(域名为:http://www.ccvita.com)取得传递的高度,通过JavaScript设置main.html中iframe的高度。最终实现预期的目标。 iframe主页面main.html 
[code] 
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head><title>iframe主页面</title></head> 
<body> 
<div style="border:1px solid #ccc;padding:10px;"> 
<iframe id="frame_content" name="frame_content" src="iframe.html" width="100%" height="0" scrolling="no" frameborder="0"></iframe> 
</div> 
<br />尾部<br /> 
</body> 
</html>

iframe嵌套页面iframe.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head><title>被iframe嵌套页面</title></head> 
<body> 
文字<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> 
文字<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> 
文字<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> 
文字<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> 
<iframe id="iframeC" name="iframeC" src="" width="0" height="0" style="display:none;" ></iframe> 
<script type="text/javascript"> 
function sethash(){ 
hashH = document.documentElement.scrollHeight; 
urlC = "agent.html"; 
document.getElementByIdx("iframeC").src=urlC+"#"+hashH; 
} 
window.onload=sethash; 
</script> 
</body> 
</html>

iframe中介页面agent.html
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head><title>iframe中介页面</title></head> 
<body> 
<script> 
function pseth() { 
var iObj = parent.parent.document.getElementByIdx('frame_content'); 
iObjH = parent.parent.frames["frame_content"].frames["iframeC"].location.hash; 
iObj.style.height = iObjH.split("#")[1]+"px"; 
} 
pseth(); 
</script> 
</body> 
</html>

代码里,kimi可能路径表示不全
main.html 与 agent.html 是必须同一个域里
而iframe.html在另一个域
Javascript 相关文章推荐
传智播客学习之JavaScript基础篇
Nov 13 Javascript
简介JavaScript中strike()方法的使用
Jun 08 Javascript
如何动态加载外部Javascript文件
Dec 02 Javascript
深入理解jQuery layui分页控件的使用
Aug 17 Javascript
JS绘制微信小程序画布时钟
Dec 24 Javascript
jquery pagination分页插件使用详解(后台struts2)
Jan 22 Javascript
JS中cookie的使用及缺点讲解
May 13 Javascript
详解webpack 多入口配置
Jun 16 Javascript
vue页面使用阿里oss上传功能的实例(二)
Aug 09 Javascript
swiper插件自定义切换箭头按钮
Dec 28 Javascript
微信小程序scroll-x失效的完美解决方法
Jul 18 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
Feb 26 Vue.js
图片img的src不变让浏览器重新加载实现方法
Mar 29 #Javascript
javascript打印大全(打印页面设置/打印预览代码)
Mar 29 #Javascript
js 利用image对象实现图片的预加载提高访问速度
Mar 29 #Javascript
jquery无缝向上滚动实现代码
Mar 29 #Javascript
验证码按回车不变解决方法
Mar 29 #Javascript
Jquery 自定义动画概述及示例
Mar 29 #Javascript
原生js拖拽(第一课 未兼容)拖拽思路
Mar 29 #Javascript
You might like
德劲1104的电路分析与改良
2021/03/01 无线电
php smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
PHP文件大小格式化函数合集
2014/03/10 PHP
是 WordPress 让 PHP 更流行了 而不是框架
2016/02/03 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
无阻塞加载脚本分析[全]
2011/01/20 Javascript
JQuery中的$.getJSON 使用说明
2011/03/10 Javascript
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
2015/03/01 Javascript
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
laypage分页控件使用实例详解
2016/05/19 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
Angular中$state.go页面跳转并传递参数的方法
2017/05/09 Javascript
详解动画插件wow.js的使用方法
2017/09/13 Javascript
js 两数组去除重复数值的实例
2017/12/06 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
python封装对象实现时间效果
2020/04/23 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
numpy concatenate数组拼接方法示例介绍
2019/05/27 Python
python定位xpath 节点位置的方法
2019/08/27 Python
Python生成器实现简单&quot;生产者消费者&quot;模型代码实例
2020/03/27 Python
python3.7.3版本和django2.2.3版本是否可以兼容
2020/09/01 Python
pandas实现导出数据的四种方式
2020/12/13 Python
快速创建 HTML5 Canvas 电信网络拓扑图的示例代码
2018/03/21 HTML / CSS
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
售后主管岗位职责
2013/12/08 职场文书
女大学生个人求职信
2013/12/09 职场文书
国贸专业的职业规划范文
2014/01/23 职场文书
先进德育工作者事迹材料
2014/01/24 职场文书
2014年基层党组织公开承诺书
2014/03/29 职场文书
银行纠风工作实施方案
2014/06/08 职场文书
单位一把手群众路线四风问题整改措施
2014/09/25 职场文书
2016教师校本培训心得体会
2016/01/08 职场文书
利用javaScript处理常用事件详解
2021/04/14 Javascript