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 极速 隐藏/显示万行表格列只需 60毫秒
Mar 28 Javascript
JavaScript 继承详解(二)
Jul 13 Javascript
js清空表单数据的两种方式(遍历+reset)
Jul 18 Javascript
Javascript原型链和原型的一个误区
Oct 22 Javascript
JS实现当前页居中分页效果的方法
Jun 18 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
Jul 18 Javascript
Jquery跨域获得Json的简单实例
May 18 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
Sep 23 Javascript
Web前端框架Angular4.0.0 正式版发布
Mar 28 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
Aug 30 Javascript
详解如何在Vue项目中导出Excel
Apr 19 Javascript
Vue实现点击导航栏当前标签后变色功能
Aug 19 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面试题集锦
2012/03/08 PHP
PHP数组无限分级数据的层级化处理代码
2012/12/29 PHP
PHP中执行cmd命令的方法
2014/10/11 PHP
PHP访问数据库集群的方法小结
2016/03/14 PHP
PHP+Oracle本地开发环境搭建方法详解
2019/04/01 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
js判断浏览器类型及设备(移动页面开发)
2015/07/30 Javascript
coffeescript使用的方式汇总
2015/08/05 Javascript
jquery实现通用的内容渐显Tab选项卡效果
2015/09/07 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
vue mounted 调用两次的完美解决办法
2018/10/29 Javascript
详解Vue 动态组件与全局事件绑定总结
2018/11/11 Javascript
微信小程序日历弹窗选择器代码实例
2019/05/09 Javascript
Centos7 安装Node.js10以上版本的方法步骤
2019/10/15 Javascript
Python中模块string.py详解
2017/03/12 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
pytorch索引查找 index_select的例子
2019/08/18 Python
Python中 Global和Nonlocal的用法详解
2020/01/20 Python
python pptx复制指定页的ppt教程
2020/02/14 Python
基于python3的socket聊天编程
2020/02/17 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
2020/03/02 Python
phpquery中文手册
2021/03/18 PHP
致跳远、跳高运动员广播稿
2014/01/09 职场文书
2014年综治宣传月活动总结
2014/04/28 职场文书
企业文化标语大全
2014/06/10 职场文书
户籍证明书标准模板
2014/09/10 职场文书
坎儿井导游词
2015/02/09 职场文书
新郎结婚保证书
2015/02/26 职场文书
Pytorch distributed 多卡并行载入模型操作
2021/06/05 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python
分享python函数常见关键字
2022/04/26 Python