iframe嵌入页面高度自动适应
类别:Web前端 浏览量:18082
时间:2013-12-20 iframe嵌入页面高度自动适应
iframe嵌入页面高度自动适应web开发的工作中我们难免会遇到使用iFrame这个标签,有时候iFrame的高度我们要让它自动的去适应内容的高度,防止出现滚动条,利于页面的美化。下面将接受iframe动态调整高度的方法。
1、同域下的iframe自适应高度
同域下父页面内的js能获取到iframe页面的高度,所以在iframe加载完后获取下高度就行了
例如
<iframe src="url" id="Iframe" frameborder="0" scrolling="no" style="border:0px;width:1000px;" onload="autoHeight();"></iframe>
<script type="text/javascript">
function autoHeight(){
var iframe = document.getElementById("Iframe");
if(iframe.Document){//ie自有属性
iframe.style.height = iframe.Document.documentElement.scrollHeight;
}else if(iframe.contentDocument){//ie,firefox,chrome,opera,safari
iframe.height = iframe.contentDocument.body.offsetHeight ;
}
}
</script>
如果是同一个域名下的不同子域,设置下document.domain就行了
IE6和IE7中的iframe没有contentDocument属性,而且如果iframe里的页面在同域下的不同子域,通过iframe.Document.documentElement.scrollHeight获取到的高度是错误的,所以还是建议用 iframe.contentwindow.document来获取高度
2、跨域下的iframe自适应高度
跨域的时候,由于js的同源策略,父页面内的js不能获取到iframe页面的高度。需要一个页面来做代理。
方法如下:假设www.studyofnet.com下的一个页面url1要包含 http://www.baidu.com下的一个页面url2。
我们使用url1下的另一个页面url11来做代理,通过它获取iframe页面的高度,并设定iframe元素的高度。
具体示例如下
// url1中包含iframe:
<iframe src="http://www.baidu.com/url2" id="Iframe" frameborder="0" scrolling="no" style="border:0px;"></iframe>
// 在url2中加入如下代码:
<iframe id="c_iframe" height="0" width="0" src="http://www.studyofnet.com/url11" style="display:none" ></iframe>
<script type="text/javascript">
(function autoHeight(){
var b_width = Math.max(document.body.scrollWidth,document.body.clientWidth);
var b_height = Math.max(document.body.scrollHeight,document.body.clientHeight);
var c_iframe = document.getElementById("c_iframe");
c_iframe.src=\\'#\\'"
})();
</script>
// 最后,agent.html中放入一段js:
<script type="text/javascript">
var b_iframe = window.parent.parent.document.getElementById("Iframe");
var hash_url = window.location.hash;
if(hash_url.indexOf("#")>=0){
var hash_width = hash_url.split("#")[1].split("|")[0]+"px";
var hash_height = hash_url.split("#")[1].split("|")[1]+"px";
b_iframe.style.width = hash_width;
b_iframe.style.height = hash_height;
}
</script>
url11 从URL中获得宽度值和高度值,并设置iframe的高度和宽度(因为url11在http://www.studyofnet.com 下,所以操作url1时不受JavaScript的同源限制)
您可能感兴趣
- js操作iframe
- iframe嵌入页面高度自动适应
- iframe解决跨域问题(跨域修改iframe页面内容详解)
- 判断iframe是否加载完成
- vue前台解析pdf文件流(Vue实现在线预览pdf文件功能利用pdf.js/iframe/embed)
- iframe标签教程(关于解决iframe标签嵌套问题的解决方法)
- iframe向子页面发送消息(使用postMessage让 iframe自适应高度的方法示例)
- frameset与iframe 的应用与区别
- iframe 弹窗(遮罩层 + Iframe实现界面自动显示的示例代码)
- iframe跨域原理(详解使用postMessage解决iframe跨域通信问题)
- iframe如何解决跨域问题(关于iframe跨域使用postMessage的实现)
- iframe嵌入页面跨域(使用iframe+postMessage实现页面跨域通信的示例代码)
- iframe怎么设置域名(iframe与window.onload如何使用详解)
- 少用iframe的原因
- iframe跨域获取标签(iframe跨域的几种常用方法)
- 林心如是谁(林心如是谁演的)
- 泰国安全吗(泰国安全吗2023)
- 菲律宾安全吗(菲律宾安全吗)
- 泰国旅游攻略(泰国旅游攻略必去景点)
- 数字藏品市场有多乱 周杰伦丢了 一只猴 ,损失超300万(数字藏品市场有多乱)
- 这里输入关键词(怎么输入关键词搜索)
热门推荐
- react 组件如何发布(React如何创建组件)
- sqlserver触发器修改当前字段(利用SQL Server触发器实现表的历史修改痕迹记录)
- mysql各种锁详解(MySQL 查看事务和锁情况的常用语句分享)
- virtualbox 创建步骤(virtualbox上安装OpenSuse的方法)
- docker容器启动原理(docker容器的原理分析)
- laravel连接多个数据库(laravel实现一个上传图片的接口,并建立软链接,访问图片的方法)
- sql数据分页怎么查询(SQL数据分页查询的方法)
- python 导入指定文件夹的模块(Python实现的在特定目录下导入模块功能分析)
- javascript中error错误类型
- 虚拟主机已被禁用(虚拟主机提示网站被暂停了是怎么回事?)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9