`

iframe动态自适应高度

 
阅读更多

今天弄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自动适应高度(完美自适应高度嵌套代码)”提供了一个解决方案,它能够确保`iframe`在各种主流浏览器中都能正确地自适应内容高度,包括360浏览器、IE6-9、遨游、火狐以及搜狗浏览器。 在传统的`...

    iframe跨域自适应高度模板

    同时,`iframe`内容的动态加载可能使得其高度不固定,如果不能自适应高度,可能会导致页面布局出现问题。本模板将介绍如何处理`iframe`的跨域和自适应高度这两个关键问题。 首先,让我们了解`iframe`跨域。由于同源...

    iframe内容高度 iframe自适应高度终极解决Iframe设置高度后无法缩小问题

    然而,`&lt;iframe&gt;`的高度自适应问题常常困扰着开发者,尤其是当`&lt;iframe&gt;`内部的内容动态加载或者变化时,如何让`&lt;iframe&gt;`自动调整其高度以适应内容,而不会导致滚动条溢出或内容被截断,成为了一个常见需求。...

    多层嵌套iframe 自适应高度的解决方法

    多层嵌套iframe 自适应高度的解决方法

    js实现iframe自适应高度

    本文将详细讲解如何使用JavaScript实现`iframe`自适应高度的解决方案,确保在各种主流浏览器中都能正常工作。 首先,理解`iframe`的基本结构和属性是至关重要的。`iframe`标签通常包含`src`属性,用于指定要加载的...

    再谈iframe自适应高度

    "再谈iframe自适应高度"这个主题,关注的是如何使iframe的内容区域根据所加载页面的高度自动调整,以避免滚动条出现或者内容被截断的问题。在网页设计中,尤其是在构建响应式布局时,这是一个非常关键的优化点。 1....

    Iframe 高度自适应,js控制Iframe 高度自适应.docx

    "Iframe 高度自适应,js 控制 Iframe 高度自适应" Iframe 高度自适应是指在网页中嵌入的 iframe 元素能够根据其内容自动调整高度,以适应不同的浏览器和屏幕尺寸。js 控制 Iframe 高度自适应是指使用 JavaScript ...

    iframe高度自适应.pdf

    实现`iframe`高度自适应的基本思路是在页面加载完成或者窗口大小发生变化时,通过JavaScript动态计算嵌入内容的实际高度,并相应地调整`iframe`的高度。这种方法的核心在于编写合适的JavaScript函数来获取嵌入内容的...

    iframe自适应高度demo

    `iframe`的自适应高度是一项关键技术,它确保了嵌入的内容能够完全显示,避免滚动条的出现,从而提供更好的用户体验。 `iframe`的基本语法如下: ```html &lt;iframe src=...

    iframe自适应高度和宽度

    ### iframe自适应高度和宽度详解 在Web开发中,`iframe`(Inline Frame)是一种常用的HTML元素,用于在当前页面内嵌入另一个HTML文档。它能够实现页面内部局部刷新的效果,广泛应用于各种复杂的网页布局中。然而,...

    Iframe 高度自适应浏览器高度

    然而,当Iframe的内容动态变化或者内容长度超过预设的高度时,我们就需要实现高度自适应。有几种常见的方法可以实现这一目标: 1. **JavaScript/jQuery**: 一种常见的方法是使用JavaScript或jQuery监听页面的...

    iframe页面的高度iframe高度自适应

    iframe包含的页面的高度,兼容性好,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`的基本结构。一个简单的`iframe`标签如下: ```html &lt;iframe src=...

    iframe自适应高度(兼容多种浏览器)

    ### iframe自适应高度(兼容多种浏览器) 在网页开发过程中,`iframe`是一种常用的元素,用于在当前页面中嵌入另一个HTML文档。然而,默认情况下,`iframe`的高度是固定的,这可能会导致内容显示不完全或者出现不必要...

    iframe自适应高度.rar

    【标题】:“iframe自适应高度.rar”涉及到的关键知识点主要集中在如何使用JavaScript来处理网页中iframe元素的高度自适应问题。在Web开发中,iframe(Inline Frame)是一种内联框架,常用于在同一个HTML文档中嵌入...

    jquery对iframe自适应高度插件

    为了解决这个问题,`jQuery`提供了一个专门的插件——"jquery对iframe自适应高度插件"。 这个插件是专门为了解决`iframe`高度自适应的问题而设计的,它允许`iframe`根据其内部内容自动调整高度,确保用户无需滚动就...

    iframe自适应宽高

    这个库允许的高度与同跨域iframe来适应他们所包含的内容的宽度自动调整大小。它最常见的问题与使用iframes提供一系列的功能,其中包括: 高度和宽度大小的iframe内容大小。 作品以多个嵌套的iframe。 跨域iframe域...

    iframe跨域嵌套自适应高度

    - **通过JavaScript动态设置高度**:利用JavaScript监听`iframe`内部文档的加载完成事件,并根据内部文档的实际高度动态调整`iframe`的高度。 - **CSS技巧**:可以通过CSS来实现一定的自适应效果,例如设置`iframe...

    iframe自适应高度说明文档

    ### iframe自适应高度详解 在网页开发中,`iframe`是一种常用的技术,用于在一个HTML页面中嵌入另一个HTML页面。然而,默认情况下,`iframe`的高度是固定的,这可能导致页面布局问题,尤其是当嵌入的内容高度不确定...

Global site tag (gtag.js) - Google Analytics