iframe 自适应大小实现代码

所属分类: 网页制作 / HTML/Xhtml 阅读数: 2346
收藏 0 赞 0 分享
页面域关系:

主页面a.html所属域A:www.jb51.net
被iframe的页面b.html所属域B:www.jb51.cn,假设地址:http://www.jb51.cn/b.html

实现效果:

A域名下的页面a.html中通过iframe嵌入B域名下的页面b.html,由于b.html的宽度和高度是不可预知而且会变化的,所以需要a.html中的iframe自适应大小.

问题本质:

js对跨域iframe访问问题,因为要控制a.html中iframe的高度和宽度就必须首先读取得到b.html的大小,A、B不属于同一个域,浏览器为了安全性考虑,使js跨域访问受限,读取不到b.html的高度和宽度.

解决方案:

引入代理代理页面c.html与a.html所属相同域A,c.html是A域下提供好的中间代理页面,假设c.html的地址:www.jb51.net/c.html,它负责读取location.hash里面的width和height的值,然后设置与它同域下的a.html中的iframe的宽度和高度.

代码如下:

a.html代码

首先a.html中通过iframe引入了b.html
<iframe id=”b_iframe” height=”0″ width=”0″ src=”http://www.jb51.cn/b.html” frameborder=”no” border=”0px” marginwidth=”0″ marginheight=”0″ scrolling=”no” allowtransparency=”yes” ></iframe>

b.html代码

复制代码
代码如下:

<script type=”text/javascript”>
var b_width = Math.max(document.documentElement.clientWidth,document.body.clientWidth);
var b_height = Math.max(document.documentElement.clientHeight,document.body.clientHeight);
var c_iframe = document.getElementById(”c_iframe”);
c_iframe.src = c_iframe.src+”#”+b_width+”|”+b_height; //https://www.jb51.net/c.html#width|height”
}
</script>
<!–js读取b.html的宽和高,把读取到的宽和高设置到和a.html在同一个域的中间代理页面车c.html的src的hash里面–>
<iframe id=”c_iframe” height=”0″ width=”0″ src=”https://www.jb51.net/c.html” style=”display:none” ></iframe>

c.html代码

复制代码
代码如下:

<script type=”text/javascript”>
var b_iframe = parent.parent.document.getElementById(”b_iframe”);
var hash_url = window.location.hash;
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>

a.html中的iframe就可以自适应为b.html的宽和高了.

其他一些类似js跨域操作问题也可以按这个思路去解决
更多精彩内容其他人还在看

HTML制作个人简历的简单实现

下面小编就为大家带来一篇HTML制作个人简历的简单实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

HTML标签marquee实现多种滚动效果(无需JS控制)

本文给大家介绍使用html标签 - <marquee></marquee>可以实现多种滚动效果,无需js控制,非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧
收藏 0 赞 0 分享

前端开发每天必学之认识HTML标签(1)

这篇文章主要为大家详细介绍了前端开发每天必学之HTML标签,帮助大家认识HTML标签,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

如何固定表格四周实现表格上下左右滚动

这篇文章主要为大家详细介绍了固定表格四周实现表格上下左右滚动的解决方法,表格上下滚动时,表格头尾固定;左右滚动的时候表格,表格第一列最后一列固定,本文为大家提供了思路,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Html轻松实现圆角矩形

这篇文章主要为大家详细介绍了html轻松实现圆角矩形的方法,告诉大家如何通过div+css以及定位来实现圆角矩形?感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Web端的邮件内容HTML格式规范总结

一直以来email在网页上的实际显示效果都不是令人感到十分理想,特别是牵扯到图片相关的布局方面,这里我们根据一些约定俗成的经验,来整理一下Web端的邮件内容HTML格式规范总结
收藏 0 赞 0 分享

关于alt和title的用法区别详解

下面小编就为大家带来一篇关于alt和title的用法区别详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

HTML中frameset标签的使用教程

不同于iframe,frameset标签不能与body标签一起使用,或许这听起来有些奇怪...well,接下来我们就一起来看一下HTML中frameset标签的使用教程
收藏 0 赞 0 分享

关于表格table嵌套,边框合并问题的解决方法

下面小编就为大家带来一篇关于表格table嵌套,边框合并问题的解决方法。小编觉得挺不错的,现在分享给大家,也给大家做个参考,一起跟随小编过来看看吧
收藏 0 赞 0 分享

Html制作简单而漂亮的登录页面

这篇文章主要为大家详细介绍了Html制作简单而漂亮的登录页面具体代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多