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 写类方式之八
Jul 05 Javascript
DOM_window对象属性之--clipboardData对象操作代码
Feb 03 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
Dec 03 Javascript
JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
Nov 24 Javascript
JavaScript字符串常用的方法
Mar 10 Javascript
深入剖析JavaScript中的函数currying柯里化
Apr 29 Javascript
分享一个精简的vue.js 图片lazyload插件实例
Mar 13 Javascript
vue2.0实战之基础入门(1)
Mar 27 Javascript
基于vue+canvas的excel-like组件实例详解
Nov 28 Javascript
vue2.0 elementUI制作面包屑导航栏
Feb 22 Javascript
纯JS开发baguetteBox.js响应式画廊插件
Jun 28 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
Nov 04 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
回帖脱衣服的图片实现代码
2014/02/15 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
PHP如何实现订单的延时处理详解
2017/12/30 PHP
extjs中grid中嵌入动态combobox的应用
2011/01/01 Javascript
js 使用form表单select类实现级联菜单效果
2012/12/19 Javascript
js字符串转换成xml对象并使用技巧解读
2013/04/18 Javascript
Javascript定义类(class)的三种方法详解
2015/03/13 Javascript
JavaScript实现信用卡校验方法
2015/04/07 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
Node.js制作简单聊天室
2017/01/12 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
JS防抖和节流实例解析
2019/09/24 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
2020/03/31 Javascript
python使用socket进行简单网络连接的方法
2015/04/29 Python
Python实时获取cmd的输出
2015/12/13 Python
python中将字典形式的数据循环插入Excel
2018/01/16 Python
Windows上使用Python增加或删除权限的方法
2018/04/24 Python
详解python的sorted函数对字典按key排序和按value排序
2018/08/10 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
python对csv文件追加写入列的方法
2019/08/01 Python
pytorch 计算Parameter和FLOP的操作
2021/03/04 Python
JD Sports法国:英国篮球和运动时尚的领导者
2017/09/28 全球购物
自我评价怎么写好呢?
2013/12/05 职场文书
银行职员个人的工作自我评价
2014/02/15 职场文书
企业安全生产演讲稿
2014/05/09 职场文书
高中同学会活动方案
2014/08/14 职场文书
市级三好学生事迹材料
2014/08/27 职场文书
关于工作经历的证明书
2014/10/11 职场文书
2014年就业工作总结
2014/11/26 职场文书
个人创业事迹材料
2014/12/30 职场文书
《吸血鬼:避世 血猎》官宣4.27发售 系列首款大逃杀
2022/04/03 其他游戏