跨域下iframe自适应高度

最近在做一个需求,需求大致背景:页面中iframe嵌入另一家公司的列表页

博主的第一反应就是“very easy!”,so,挽起双袖开始敲代码

结果出现问题了,iframe跨域,无法获得内嵌页面的高度,因此出现的上下滚动条,so难看!

于是上网找大神,皇天不负有心人啊,终于找到了,激动之情无以言表....

故事背景交代完毕

/******************************华丽的分割线,哈哈****************************/

大神的例子大致是这样的:

假设www.a.com下的一个页面a.html要包含www.b.com下的一个页面c.html。

我们使用www.a.com下的另一个页面agent.html来做代理,通过它获取iframe页面的高度,并设定iframe元素的高度

a.html中包含iframe:

1 <iframe src="http://www.b.com/c.html" id="Iframe" frameborder="0" scrolling="no" style="border:0px;"></iframe>

在c.html中加入如下代码:

1 <iframe id="c_iframe"  height="0" width="0"  src="http://www.a.com/agent.html" style="display:none" ></iframe>
2 <script type="text/javascript">
3 (function autoHeight(){
4 var b_width = Math.max(document.body.scrollWidth,document.body.clientWidth);
5 var b_height = Math.max(document.body.scrollHeight,document.body.clientHeight);
6 var c_iframe = document.getElementById("c_iframe");
7 c_iframe.src = c_iframe.src + "#" + b_width + "|" + b_height;  // 这里通过hash传递b.htm的宽高
8 })();
9 </script>

最后,agent.html中放入一段js:

 1 <script type="text/javascript">
 2 var b_iframe = window.parent.parent.document.getElementById("Iframe");
 3 var hash_url = window.location.hash;
 4 if(hash_url.indexOf("#")>=0){
 5 var hash_width = hash_url.split("#")[1].split("|")[0]+"px";
 6 var hash_height = hash_url.split("#")[1].split("|")[1]+"px";
 7 b_iframe.style.width = hash_width;
 8 b_iframe.style.height = hash_height;
 9 }
10 </script>

agent.html从URL中获得宽度值和高度值,并设置iframe的高度和宽度(因为agent.html在www.a.com下,所以操作a.html时不受JavaScript的同源限制)

原文链接:iframe高度自适应内容(http://caibaojian.com/iframe-adjust-content-height.html)

文章引用:前端开发博客

时间: 2024-10-28 10:32:11

跨域下iframe自适应高度的相关文章

设置跨域的iframe的高度

原因 如下图,A域中有个B域的页面,但是B的页面的长度不确定,A无法去设置一个准确的高度. PS:iframe高度设置auto是无效的 解决办法 如上图, (1)在B页面中加一个A的代理页面的iframe PS:这最里面的A页面能调用最外层A页面的方法,而B页面是调用不了最外层A的(因为跨域的安全限制). (2)当B页面加载完成时,修改A的agent.html所在iframe里src. setTimeout(function(){ var _height = $("#vs-source"

跨域和非跨域 获取iframe页面高度的方法

跨域方法: 第一步,在主页面里插入代码://假设主域名是www.aaa.com  需要插入的跨域域名为www.bbb.com <iframe src="http://www.bbb.com/index.html" width="100%" height="100%" id="iframepage" name="iframepage" onLoad="iFrameHeight()"

跨域的iframe自动调整高度(cross-domain iframe resizer)

可以使用iframe-resizer项目地址: http://davidjbradshaw.github.io/iframe-resizer/演示地址: http://davidjbradshaw.com/iframe-resizer/example/ 用法:1.父页面: 引入jQuery.js 和 iframeResizer.min.js <script> jQuery(function($){ $('#js_iframe').iFrameResize(); }) </script&g

iframe自适应高度的多种方法方法小结

对于自适应高度的代码有很多,可效率什么的考虑进来好代码就不多见了,不过思路倒是差不多的. 不带边框的iframe因为能和网页无缝的结合从而不刷新页面的情况下更新页面的部分数据成为可能,可是 iframe的大小却不像层那样可以“伸缩自如”,所以带来了使用上的麻烦,给iframe设置高度的时候多了也不好,少了更是不行,现在,让我来告诉大 家一种iframe动态调整高度的方法,主要是以下JS函数: 第一种方法:代码简单,兼容性还可以,大家可以先测试下. function SetWinHeight(ob

iframe自适应高度

对于自适应高度的代码有很多,可效率什么的考虑进来好代码就不多见了,不过思路倒是差不多的,不带边框的iframe因为能和网页无缝的结合从而不刷新页面的情况下更新页面的部分数据成为可能,可是 iframe的大小却不像层那样可以“伸缩自如”,所以带来了使用上的麻烦,给iframe设置高度的时候多了也不好,少了更是不行,现在,让我来告诉大 家一种iframe动态调整高度的方法,主要是以下JS函数: function SetWinHeight(obj) { var win=obj; if (documen

iframe 高度设置、iframe 自适应高度方法总结

谓iframe自适应高度,就是,基于界面美观和交互的考虑,隐藏了iframe的border和scrollbar,让人看不出它是个iframe.如果iframe始终调用同一个固定高度的页面,我们直接写死iframe高度就可以了.而如果iframe要切换页面,或者被包含页面要做DOM动态操作,这时候,就需要程序去同步iframe高度和被包含页的实际高度了. 如果iframe的高度没有确定,那将是初始的高度.iframe是网页中的一部分,其大小还要受到网页的限制,设置最高可以使用height="100

iframe自适应高度的多种方法

对于自适应高度的代码有很多,可效率什么的考虑进来好代码就不多见了,不过思路倒是差不多的 不带边框的iframe因为能和网页无缝的结合从而不刷新页面的情况下更新页面的部分数据成为可能,可是 iframe的大小却不像层那样可以“伸缩自如”,所以带来了使用上的麻烦,给iframe设置高度的时候多了也不好,少了更是不行,现在,让我来告诉大 家一种iframe动态调整高度的方法,主要是以下JS函数: 第一种方法:代码简单,兼容性还可以,大家可以先测试下. function SetWinHeight(obj

js实现iframe自适应高度

转自:http://www.jb51.net/article/15780.htm 对于自适应高度的代码有很多,可效率什么的考虑进来好代码就不多见了,不过思路倒是差不多的! 不带边框的iframe因为能和网页无缝的结合从而不刷新页面的情况下更新页面的部分数据成为可能,可是 iframe的大小却不像层那样可以“伸缩自如”,所以带来了使用上的麻烦,给iframe设置高度的时候多了也不好,少了更是不行,现在,让我来告诉大 家一种iframe动态调整高度的方法,主要是以下JS函数: 1 2 functio

网页制作技巧:iframe自适应高度

转自:http://www.enet.com.cn/article/2012/0620/A20120620126237.shtml 通过Google搜索iframe 自适应高度,结果5W多条,搜索iframe 高度自适应,结果2W多条. 我翻了前面的几十条,刨去大量的转载,有那么三五篇是原创的.而这几篇原创里面,基本上只谈到如何自适应静的东西,就是没有考虑到JS操作DOM之后,如何做动态同步的问题.另外,在兼容性方面,也研究的不彻底. 这篇文章,希望在这两个方面再做一些深入. 可能有人还没接触到