多个iframe同时加载并动态调整大小

本文介绍了如何使用JavaScript动态调整iframe的高度,并监控其加载状态变化,包括iframe的加载阶段,如loading、interactive和complete,确保页面布局的灵活性和响应性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


动态调整iframe高度的函数

function dyniframesize(ifm) {
		var pTar = null; 
		if (document.getElementById){ 
			pTar = document.getElementById(ifm); 
		}else{ 
			eval('pTar = ' + ifm + ';'); 
		}
		$(pTar).parent().css("visibility", "hidden");
		if (pTar && pTar.src && !window.opera){
		//begin resizing iframe 
			pTar.style.display="block" ;
			if (pTar.contentDocument && pTar.contentDocument.body.offsetHeight){ 
				//ns6 syntax 
				pTar.height = pTar.contentDocument.body.offsetHeight +20; 
				//pTar.width = pTar.contentDocument.body.scrollWidth+20; 
			}else if (pTar.Document && pTar.Document.body.scrollHeight){ 
				//ie5+ syntax 
				pTar.height = pTar.Document.body.scrollHeight; 
				//pTar.width = pTar.Document.body.scrollWidth; 
			} 
			$(pTar).parent().css("visibility", "visible");
		}
	}

iframe初始化HTML页面放置要求


		<%--题目类容 --%>	
		<div class="challengeCantainter" style="margin-left:50px;">
			<s:iterator value="exerciseItemVoList" var="exerVo" status="status">
				<s:if test="isShowUserAnswer">
						<iframe id="challengeIframe${status.index}" name="challengeIframe${status.index}" index="${status.index}" style="display: none;"
							scrolling="no"  width="660px" frameborder="no" border="0" onclick="javascript:dyniframesize('challengeIframe${status.index}');"
							src ="<s:url value="/exercise/showExercise.action">
	            				<s:param name="itemId" value="#exerVo.id"/>
	            				<s:param name="exerciseStudyRecordItemId" value="#exerVo.exerciseStudyRecordItemId"/>
	        				</s:url>">
						</iframe>
				</s:if>
				<s:else>
						<iframe id="challengeIframe${status.index}" name="challengeIframe${status.index}" index="${status.index}" style="display: none;"
							scrolling="no"  width="660px" frameborder="no" border="0" onclick="javascript:dyniframesize('challengeIframe${status.index}');"
							src ="<s:url value="/exercise/showExercise.action">
	            				<s:param name="itemId" value="#exerVo.id"/>
	        				</s:url>">
						</iframe>
				</s:else>
			</s:iterator>
		</div>

触发调整




监控iframe加载的状态变化

每当iframe加载页面,过程内会激活onreadystatechange事件三次,
相应的状态分别是loading,interactive和complete,而最后一次才是complete. 

var oFrm = document.getElementById('ifrm');
oFrm.onload = oFrm.onreadystatechange = function() {
     if (this.readyState && this.readyState != 'complete') return;
     else {
         onComplete();
     }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值