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 相关文章推荐
Add a Picture to a Microsoft Word Document
Jun 15 Javascript
Javascript Global对象
Aug 13 Javascript
Javascript面向对象之四 继承
Feb 08 Javascript
js中函数声明与函数表达式
Jun 03 Javascript
JS基于cookie实现来宾统计记录访客信息的方法
Aug 04 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
May 05 Javascript
浅析JavaScript中作用域和作用域链
Dec 06 Javascript
Bootstrap的基本应用要点浅析
Dec 19 Javascript
Angular2数据绑定详解
Apr 18 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
May 15 jQuery
微信小程序实现列表左右滑动
Nov 19 Javascript
如何制作自己的原生JavaScript路由
May 05 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中最容易忘记的一些知识点总结
2013/04/28 PHP
ajax 文件上传应用简单实现
2009/03/03 Javascript
jQuery EasyUI API 中文文档 - ProgressBar 进度条
2011/09/29 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
gridview生成时如何去掉style属性中的border-collapse
2014/09/30 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
js实现瀑布流的三种方式比较
2020/06/28 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
es6的数字处理的方法(5个)
2017/03/16 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
2018/05/17 Javascript
Node.js中的cluster模块深入解读
2018/06/11 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
js利用递归与promise 按顺序请求数据的方法
2019/08/30 Javascript
Centos7 安装Node.js10以上版本的方法步骤
2019/10/15 Javascript
angularjs模态框的使用代码实例
2019/12/20 Javascript
原生JavaScript实现贪吃蛇游戏
2020/11/04 Javascript
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
python 简单的多线程链接实现代码
2016/08/28 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
2018/02/01 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
python实现机器学习之元线性回归
2018/09/06 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
python word转pdf代码实例
2019/08/16 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
2020/03/06 Python
Python描述数据结构学习之哈夫曼树篇
2020/09/07 Python
Python urllib request模块发送请求实现过程解析
2020/12/10 Python
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
大学生个人自我鉴定
2013/12/03 职场文书
网上卖盒饭创业计划书
2014/01/26 职场文书
高中体育教学反思
2014/01/29 职场文书
食品药品安全责任书
2015/05/11 职场文书
大学生受助感言
2015/08/01 职场文书
七年级话题作文之执着
2019/11/19 职场文书
PostgreSQL之连接失败的问题及解决
2023/05/08 PostgreSQL