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 相关文章推荐
JS解析XML的实现代码
Nov 12 Javascript
jquery ajax请求实例深入解析
Nov 26 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
Dec 12 Javascript
jquery实现点击页面计算点击次数
Jan 23 Javascript
JS中闭包的经典用法小结(2则示例)
Dec 28 Javascript
jQuery插件ajaxFileUpload使用详解
Jan 10 Javascript
Vue 仿百度搜索功能实现代码
Feb 16 Javascript
微信小程序 request接口的封装实例代码
Apr 26 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
Oct 19 jQuery
vue页面离开后执行函数的实例
Mar 13 Javascript
Node.js应用设置安全的沙箱环境
Apr 23 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
Jul 23 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操作文件方法问答
2007/03/16 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
2015/11/10 PHP
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
php 获取xml接口数据的处理方法
2018/05/31 PHP
深入理解JavaScript作用域和作用域链
2011/10/21 Javascript
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
2011/11/10 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
JavaScript对象数组排序实例方法浅析
2016/06/15 Javascript
自动适应iframe右边的高度
2016/12/22 Javascript
JavaScript函数参数的传递方式详解
2017/03/06 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
Vue中对拿到的数据进行A-Z排序的实例
2018/09/25 Javascript
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
layui输入框中只允许输入整数的实现方法
2019/09/18 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
零基础写python爬虫之使用Scrapy框架编写爬虫
2014/11/07 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
python中的set实现不重复的排序原理
2018/01/24 Python
教你用一行Python代码实现并行任务(附代码)
2018/02/02 Python
Python yield与实现方法代码分析
2018/02/06 Python
对python指数、幂数拟合curve_fit详解
2018/12/29 Python
Python将列表数据写入文件(txt, csv,excel)
2019/04/03 Python
python写入文件自动换行问题的方法
2019/07/05 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
基于Python批量生成指定尺寸缩略图代码实例
2019/11/20 Python
银行会计财务工作个人的自我评价
2013/10/29 职场文书
《鞋匠的儿子》教学反思
2014/03/02 职场文书
体育运动会广播稿
2014/10/05 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
幼师辞职信怎么写
2015/02/27 职场文书
python办公自动化之excel的操作
2021/05/23 Python
Nginx四层负载均衡的配置指南
2021/06/11 Servers
Python 避免字典和元组的多重嵌套问题
2022/07/15 Python