再谈iframe自适应高度 By 大米

来源:互联网 发布:联合国合法席位知乎 编辑:程序博客网 时间:2024/04/18 12:16
这贴比较长,没有耐性的朋友请直接拖到帖子末尾的代码示例,或者直接去玩我提供的Demo。Demo页面:主页面 iframe_a.html ,被包含页面 iframe_b.htm 和 iframe_c.html下面开始讲:通过Google搜索iframe 自适应高度,结果5W多条,搜索iframe 高度自适应,结果2W多条。我翻了前面的几十条,刨去大量的转载,有那么三五篇是原创的。而这几篇原创里面,基本上只谈到如何自适应静的东西,就是没有考虑到JS操作DOM之后,如何做动态同步的问题。另外,在兼容性方面,也研究的不彻底。这篇文章,希望在这两个方面再做一些深入。可能有人还没接触到这个问题过,先说明一下,什么是自适应高度吧。所谓iframe自适应高度,就是,基于界面美观和交互的考虑,隐藏了iframe的border和scrollbar,让人看不出它是个iframe。如果iframe始终调用同一个固定高度的页面,我们直接写死iframe高度就可以了。而如果iframe要切换页面,或者被包含页面要做DOM动态操作,这时候,就需要程序去同步iframe高度和被包含页的实际高度了。顺便说下,iframe在迫不得已的时候才去用,它会给前端开发带来太多的麻烦。传统做法大致有两个:方法一,在每个被包含页在本身内容加载完毕之后,执行JS取得本页面的高度,然后去同步父页面的iframe高度。方法二,在主页面iframe的onload事件中执行JS,去取得被包含页的高度内容,然后去同步高度。在代码维护角度考虑,方法二是优于方法一的,因为方法一,每个被包含页都要去引入一段相同的代码来做这个事情,创建了好多副本。两个方法都只处理了静的东西,就是只在内容加载的时候执行,如果JS去操作DOM引起的高度变化,都不太方便。如果在主窗口做一个Interval,不停的来获取被包含页的高度,然后做同步,是不是即方便,又解决了JS操作DOM的问题了呢?答案是肯定的。Demo页面:主页面 iframe_a.html ,被包含页面 iframe_b.htm 和 iframe_c.html主页面代码示例:This entry was posted on 星期三, 五月 7th, 2008 at 1:42 下午 and is filed under 前端开发. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
原创粉丝点击