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中window.confirm的行为
Oct 21 Javascript
浅谈关于JavaScript的语言特性分析
Apr 11 Javascript
浅析IE10兼容性问题(frameset的cols属性)
Jan 03 Javascript
javascript对象的使用和属性操作示例详解
Mar 02 Javascript
jquery实现翻动fadeIn显示的方法
Mar 05 Javascript
jquery中attr和prop的区别分析
Mar 16 Javascript
JS iFrame加载慢怎么解决
May 13 Javascript
javascript中JSON.parse()与eval()解析json的区别
May 19 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
Aug 05 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
Aug 28 Javascript
Vue实现商品详情页的评价列表功能
Sep 04 Javascript
分享15个Webpack实用的插件!!!
Mar 31 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获取网页内容方法总结
2008/12/04 PHP
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
eAccelerator的安装与使用详解
2013/06/13 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
2016/03/22 PHP
thinkphp5框架实现的自定义扩展类操作示例
2019/05/16 PHP
jQuery操作input值的各种方法总结
2013/11/21 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
2015/06/19 Javascript
apply和call方法定义及apply和call方法的区别
2015/11/15 Javascript
AngularJS 所有版本下载地址
2016/09/14 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
Vue form表单动态添加组件实战案例
2019/09/02 Javascript
原生JS实现贪吃蛇小游戏
2020/03/09 Javascript
vue 组件简介
2020/07/31 Javascript
Django中使用locals()函数的技巧
2015/07/16 Python
python将回车作为输入内容的实例
2018/06/23 Python
django drf框架中的user验证以及JWT拓展的介绍
2019/08/12 Python
去除python中的字符串空格的简单方法
2020/12/22 Python
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
Pandora德国官网:购买潘多拉手链、戒指、项链和耳环
2020/02/20 全球购物
Kingsoft金山公司C/C++笔试题
2016/05/10 面试题
delegate与普通函数的区别
2014/01/22 面试题
高中生毕业自我鉴定范文
2013/12/22 职场文书
优良学风班申请材料
2014/02/13 职场文书
《金钱的魔力》教学反思
2014/02/24 职场文书
新春寄语大全
2014/04/09 职场文书
导师工作推荐信范文
2014/05/17 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
小浪底导游词
2015/02/12 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python
对讲机知识
2022/04/07 无线电
Python时间操作之pytz模块使用详解
2022/06/14 Python