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 相关文章推荐
一样的table?不一样的table(可编辑状态table)
Sep 19 Javascript
Javascript对象属性方法汇总
Nov 21 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
Nov 23 Javascript
js 轮播效果实例分享
Dec 28 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
Apr 11 jQuery
Angular 4依赖注入学习教程之InjectToken的使用(八)
Jun 04 Javascript
vue-prop父组件向子组件进行传值的方法
Mar 01 Javascript
d3.js实现自定义多y轴折线图的示例代码
May 30 Javascript
vue实现引入本地json的方法分析
Jul 12 Javascript
ES6小技巧之代替lodash
Jun 07 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
Jan 18 Javascript
html-webpack-plugin修改页面的title的方法
Jun 18 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购物网站支付paypal使用方法
2010/11/28 PHP
Php中文件下载功能实现超详细流程分析
2012/06/13 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
PHP 实现 JSON 数据的编码和解码操作详解
2020/04/22 PHP
JavaScript中“基本类型”之争小结
2013/01/03 Javascript
JS实现多物体缓冲运动实例代码
2013/11/29 Javascript
js调用后台、后台调用前台等方法总结
2014/04/17 Javascript
JS实现div居中示例
2014/04/17 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
jQuery中extend函数的实现原理详解
2015/02/03 Javascript
JS锚点的设置与使用方法
2016/09/05 Javascript
nodejs 实现钉钉ISV接入的加密解密方法
2017/01/16 NodeJs
jQuery动态生成不规则表格(前后端)
2017/02/21 Javascript
bootstrap实现tab选项卡切换
2020/08/09 Javascript
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
[12:36]《DOTA2》国服注册与激活指南全攻略
2013/04/28 DOTA
python抓取某汽车网数据解析html存入excel示例
2013/12/04 Python
Python实现读取目录所有文件的文件名并保存到txt文件代码
2014/11/22 Python
Python中获取对象信息的方法
2015/04/27 Python
python实现装饰器、描述符
2018/02/28 Python
对Python 3.2 迭代器的next函数实例讲解
2018/10/18 Python
Python实现将HTML转成PDF的方法分析
2019/05/04 Python
python日志logging模块使用方法分析
2019/05/23 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
大学四年学习的自我评价分享
2013/12/09 职场文书
哈理工毕业生的求职信
2013/12/22 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
银行授权委托书样本
2014/10/13 职场文书
委托公证书格式
2015/01/26 职场文书
爱护环境卫生倡议书
2015/04/29 职场文书
教师节简报
2015/07/20 职场文书
告诉你一个秘密:富人致富的五大优点
2019/07/11 职场文书
python 镜像环境搭建总结
2022/09/23 Python