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 相关文章推荐
JS代码放在head和body中的区别分析
Dec 01 Javascript
编程语言JavaScript简介
Oct 16 Javascript
jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解
Nov 19 Javascript
简化版手机端照片预览组件
Apr 13 Javascript
理解JavaScript事件对象
Jan 25 Javascript
Js实现简单的小球运动特效
Feb 18 Javascript
轻松掌握JavaScript中介者模式
Aug 26 Javascript
vue.js实现的经典计算器/科学计算器功能示例
Jul 11 Javascript
webpack常用构建优化策略小结
Nov 21 Javascript
不刷新网页就能链接新的js文件方法总结
Mar 01 Javascript
JS面向对象编程实现的拖拽功能案例详解
Mar 03 Javascript
详解vue中v-on事件监听指令的基本用法
Jul 22 Javascript
图片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
PHP自动更新新闻DIY
2006/10/09 PHP
php实现的click captcha点击验证码类实例
2014/09/23 PHP
php使用socket post数据到其它web服务器的方法
2015/06/02 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
jquery 3D球状导航的文章分类
2010/07/06 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
2016/07/05 Javascript
html+js+highcharts绘制圆饼图表的简单实例
2016/08/04 Javascript
nodejs个人博客开发第二步 入口文件
2017/04/12 NodeJs
vue-axios使用详解
2017/05/10 Javascript
深入理解react 组件类型及使用场景
2019/03/07 Javascript
vue基础之v-bind属性、class和style用法分析
2019/03/11 Javascript
基于JavaScript实现留言板功能
2020/03/16 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
js实现扫雷源代码
2020/11/27 Javascript
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
Python中的变量和作用域详解
2016/07/13 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
2019/04/16 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
python3检查字典传入函数键是否齐全的实例
2020/06/05 Python
如何利用python正则表达式匹配版本信息
2020/12/09 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
小学生班会演讲稿
2014/01/09 职场文书
大学生就业策划书范文
2014/04/04 职场文书
2014年党委工作总结
2014/11/22 职场文书
教师节表彰会主持词
2015/07/06 职场文书
nginx实现动静分离的方法示例
2021/11/07 Servers
如何用六步教会你使用python爬虫爬取数据
2022/04/06 Python
Python语法学习之进程的创建与常用方法详解
2022/04/08 Python