今天弄iframe动态自适应高度遇到了点问题,就是在iframe里面发表文章后显示内容不会改变高度,而使用iframe的目的是为了和父页面解藕,可以给任意的页面调用,iframe里面的内容当成独立模块组件化来出来的,所以对父页面不能有任何假设。
自适应高度是在父页面加载的时候设置的,第一次加载或者发表后刷新都没有问题,关键是如何在iframe页面内容变化的时候更新高度呢?
第一个思路:在父页面做个定时器,感觉不是很好,效率低是肯定的,而且加定时器无疑多了冗余代码,一般情况下iframe里面的内容是不会变化的,为了少数人的效果牺牲多数人的性能是让人非常难以容忍的设计。
第二个思路:在iframe页面内容变化之前通知父页面,让父页面触发setTimeout事件,在大概200ms后执行自适应高度函数。
这个思路又回到了耦合的问题上了,对父页面就有了假设了,而且每次都调用父页面的方法也很麻烦。
最后,竟然把最简单的方法给忘记了,iframe自己的onload事件,当iframe内容变化的时候(提交表单,src变化)都会触发这个事件,那么用这个事件来触发父页面的自适应高度函数问题不就都解决了?
最后分享下代码:
<iframe id="discussion_hot" src="${base}/other/discussion_hot.action" onload="coos.iframe.autoHeight(coos.$id('discussion_hot'));" width="100%" frameborder="0" marginheight="0" marginwidth="0" scrolling="no"></iframe>
var coos = function(){this.version = "0.2";};
/**
* 根据id快速获取dom对象的方法
* @param id 字符串类型
* @return DOM element
*/
coos.$id = function(id)
{
return document.getElementById(id);
};
/**
* 在不确定传入id还是obj类型时快速获取dom对象的方法
* @param el id或obj
* @return DOM element
*/
coos.$obj = function(el)
{
var obj = el;
if(typeof(el) == "string")
obj = document.getElementById(el);
return obj;
};
/**
* iframe的处理函数
* 提供批量和单独iframe自适应高度功能
*/
coos.iframe = {
autoHeights : function(els)
{
for (var i = 0; i < arguments.length; i++)
{
coos.iframe.autoHeight(arguments[i]);
}
},
autoHeight : function(el)
{
var obj = coos.$obj(el);
var id = obj.id;
var subWeb = document.frames ? document.frames[id].document : obj.contentDocument;
if(obj != null && subWeb != null)
{
obj.height = parseInt(subWeb.body.scrollHeight) + "px";
}
}
};
注意:如果iframe页面里面的样式body{height:100%;}那么在火狐下最小高度为150px;(ie6.0下正常)如果iframe没有那么高也会给弄到那么高的。设置成height:auto;或者不设置高度则可以获得实际高度了。
分享到:
相关推荐
标题提到的“iframe自动适应高度(完美自适应高度嵌套代码)”提供了一个解决方案,它能够确保`iframe`在各种主流浏览器中都能正确地自适应内容高度,包括360浏览器、IE6-9、遨游、火狐以及搜狗浏览器。 在传统的`...
同时,`iframe`内容的动态加载可能使得其高度不固定,如果不能自适应高度,可能会导致页面布局出现问题。本模板将介绍如何处理`iframe`的跨域和自适应高度这两个关键问题。 首先,让我们了解`iframe`跨域。由于同源...
然而,`<iframe>`的高度自适应问题常常困扰着开发者,尤其是当`<iframe>`内部的内容动态加载或者变化时,如何让`<iframe>`自动调整其高度以适应内容,而不会导致滚动条溢出或内容被截断,成为了一个常见需求。...
多层嵌套iframe 自适应高度的解决方法
本文将详细讲解如何使用JavaScript实现`iframe`自适应高度的解决方案,确保在各种主流浏览器中都能正常工作。 首先,理解`iframe`的基本结构和属性是至关重要的。`iframe`标签通常包含`src`属性,用于指定要加载的...
"再谈iframe自适应高度"这个主题,关注的是如何使iframe的内容区域根据所加载页面的高度自动调整,以避免滚动条出现或者内容被截断的问题。在网页设计中,尤其是在构建响应式布局时,这是一个非常关键的优化点。 1....
"Iframe 高度自适应,js 控制 Iframe 高度自适应" Iframe 高度自适应是指在网页中嵌入的 iframe 元素能够根据其内容自动调整高度,以适应不同的浏览器和屏幕尺寸。js 控制 Iframe 高度自适应是指使用 JavaScript ...
实现`iframe`高度自适应的基本思路是在页面加载完成或者窗口大小发生变化时,通过JavaScript动态计算嵌入内容的实际高度,并相应地调整`iframe`的高度。这种方法的核心在于编写合适的JavaScript函数来获取嵌入内容的...
`iframe`的自适应高度是一项关键技术,它确保了嵌入的内容能够完全显示,避免滚动条的出现,从而提供更好的用户体验。 `iframe`的基本语法如下: ```html <iframe src=...
### iframe自适应高度和宽度详解 在Web开发中,`iframe`(Inline Frame)是一种常用的HTML元素,用于在当前页面内嵌入另一个HTML文档。它能够实现页面内部局部刷新的效果,广泛应用于各种复杂的网页布局中。然而,...
然而,当Iframe的内容动态变化或者内容长度超过预设的高度时,我们就需要实现高度自适应。有几种常见的方法可以实现这一目标: 1. **JavaScript/jQuery**: 一种常见的方法是使用JavaScript或jQuery监听页面的...
iframe包含的页面的高度,兼容性好,iframe高度自适应
可以实现Iframe跨域自适应高度 main.htm和agent.htm文件放在www.a.com域内 iframe.htm放在www.b.com域内 这样就可以通过a.com域中的main.htm文件访问b.com域中的iframe.htm文件了
本篇文章将详细探讨如何实现`iframe`根据页面内容自适应高度和宽度。 首先,我们需要理解`iframe`的基本结构。一个简单的`iframe`标签如下: ```html <iframe src=...
### iframe自适应高度(兼容多种浏览器) 在网页开发过程中,`iframe`是一种常用的元素,用于在当前页面中嵌入另一个HTML文档。然而,默认情况下,`iframe`的高度是固定的,这可能会导致内容显示不完全或者出现不必要...
【标题】:“iframe自适应高度.rar”涉及到的关键知识点主要集中在如何使用JavaScript来处理网页中iframe元素的高度自适应问题。在Web开发中,iframe(Inline Frame)是一种内联框架,常用于在同一个HTML文档中嵌入...
为了解决这个问题,`jQuery`提供了一个专门的插件——"jquery对iframe自适应高度插件"。 这个插件是专门为了解决`iframe`高度自适应的问题而设计的,它允许`iframe`根据其内部内容自动调整高度,确保用户无需滚动就...
这个库允许的高度与同跨域iframe来适应他们所包含的内容的宽度自动调整大小。它最常见的问题与使用iframes提供一系列的功能,其中包括: 高度和宽度大小的iframe内容大小。 作品以多个嵌套的iframe。 跨域iframe域...
- **通过JavaScript动态设置高度**:利用JavaScript监听`iframe`内部文档的加载完成事件,并根据内部文档的实际高度动态调整`iframe`的高度。 - **CSS技巧**:可以通过CSS来实现一定的自适应效果,例如设置`iframe...
### iframe自适应高度详解 在网页开发中,`iframe`是一种常用的技术,用于在一个HTML页面中嵌入另一个HTML页面。然而,默认情况下,`iframe`的高度是固定的,这可能导致页面布局问题,尤其是当嵌入的内容高度不确定...