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中的startWith和endWith的几种实现方法
May 07 Javascript
jquery增加时编辑jqGrid(实例代码)
Nov 08 Javascript
Json序列化和反序列化方法解析
Dec 19 Javascript
jquery实现二级导航下拉菜单效果
Dec 18 Javascript
javascript每日必学之基础入门
Feb 16 Javascript
JavaScript简单获取页面图片原始尺寸的方法
Jun 21 Javascript
BootstrapValidator超详细教程(推荐)
Dec 07 Javascript
Bootstrap Scrollspy源码学习
Mar 02 Javascript
解决VUEX刷新的时候出现数据消失
Jul 03 Javascript
微信小程序实现倒计时补零功能
Jul 09 Javascript
浅谈HTTP 缓存的那些事儿
Oct 17 Javascript
vue使用Font Awesome的方法步骤
Feb 26 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
超人钢铁侠联手合作?美漫作家呼吁DC漫威合作联动以抵抗疫情
2020/04/09 欧美动漫
PHP+MYSQL 出现乱码的解决方法
2008/08/08 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
Linux下php5.4启动脚本
2014/08/03 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
2016/09/23 PHP
php微信公众号开发模式详解
2016/11/28 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
php中yii框架实例用法
2020/12/22 PHP
script标签属性type与language使用选择
2012/12/02 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
2014/05/08 Javascript
jQuery多个版本和其他js库冲突的解决方法
2016/08/11 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
利用Node.js编写跨平台的spawn语句详解
2017/02/12 Javascript
ES6新数据结构Set与WeakSet用法分析
2017/03/31 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
详解让sublime text3支持Vue语法高亮显示的示例
2017/09/29 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
简介Django框架中可使用的各类缓存
2015/07/23 Python
python基于socket进行端口转发实现后门隐藏的示例
2019/07/25 Python
python函数参数(必须参数、可变参数、关键字参数)
2019/08/16 Python
python爬虫scrapy图书分类实例讲解
2020/11/23 Python
Java中实现多态的机制是什么?
2014/12/07 面试题
客服文员岗位职责
2013/11/29 职场文书
中学优秀班主任事迹材料
2014/05/01 职场文书
说好普通话圆梦你我他演讲稿
2014/09/21 职场文书
世界水日宣传活动总结
2015/02/09 职场文书
科技活动总结范文
2015/05/11 职场文书
2015年教研员工作总结
2015/05/26 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
校运会宣传稿大全
2015/07/23 职场文书
环境卫生标语
2015/08/03 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python