今天遇到了一个问题,在父页面内有一个iframe能自动根据载入页面的大小而动态调整页面大小。特此记录下解决方法:
父页面main.html内js代码:
/*动态调整iframe的大小*/
function changeIframeSize(iframeContentHeight){
document.getElementById('rightContent').height = iframeContentHeight+20;
}
/*iframe页面载入处理函数*/
function iframeOnload()
{
var frms=document.getElementById('rightContent');
/*判断浏览器类型*/
var height=($.browser.msie||$.browser.opera)? frms.document.body.scrollHeight:frms.contentDocument.body.offsetHeight;
changeIframeSize(height);
/*this.height=rightContent.document.body.scrollHeight*/
}
父页面main.html内的iframe:
<div id="right" >
<iframe width="100%" frameBorder="0" frameSpacing="0" scrolling="auto" marginHeight="0" marginWidth="0" name="rightContent" src="articlesList.jsp?categoryId=-1" id="rightContent" onload="iframeOnload()" ></iframe>
</div>
载入页面sub.html内动态调整js代码:
var height=($.browser.msie||$.browser.opera)? document.body.scrollHeight:document.body.offsetHeight;/*判断浏览器类型*/
parent.changeIframeSize(height);/*调用父页面内的js函数,调整iframe的大小*/
如上述代码所示,动态调整函数主要有两个:
1.iframeOnload主要用于当载入页面刚载入完成后,则响应iframe的onload事件;
2.changeIframeSize用于实际调整iframe的大小。iframe的onload的事件只有当该页面第一次载入时候才触发,而如果我们希望在页面载入以后,iframe仍然能根据载入页面的大小变化而动态调整,则是在载入页面中手动调用父页面内的changeIframeSize函数。
上述代码需要注意的地方如下:
1.$.browser.msie||$.browser.opera,用于判断浏览器的类型,这主要是不同浏览器对页面的实际尺寸理解不一致造成。我这里是利用jQuery来判断浏览器类型,因而还需要载入jQuery.js文件;
2.注意表示iframe内的载入页面在IE中无论是父页面还是载入页面都是调用document的;而在firefox中则不一样,在父亲中则是调用contentDocument,而在载入页面中则是用document,具体请参见上述两处浏览器类型判断代码即可。
分享到:
相关推荐
在网页开发中,`iframe...3. 动态调整:在父页面中监听事件,接收到高度信息后更新`iframe`的高度。 通过以上方法,我们可以创建一个流畅的用户体验,让用户在浏览页面时无需滚动主页面就能查看`iframe`中的全部内容。
为了让`iframe`内容能根据容器大小动态调整,开发者需要关注以下几点: 1. **宽度和高度设置**:确保`iframe`元素的`width`和`height`属性设置正确。可以设置为百分比,使其相对于包含它的容器自适应,如: ```...
自动调整iframe高度的核心在于监听页面加载完成事件,然后通过JavaScript读取iframe内部内容的高度,并将其设置为iframe本身的高度。这一过程通常需要针对不同浏览器进行适配,因为iframe在不同的浏览器中可能采用...
发现可以导致页面大小调整事件(窗口大小调整,CSS动画和过渡,改变方向和鼠标事件)。 简化通讯和主机之间通过PostMessage iframe的网页。 在iframe页面链接修复和支持iFrame与父页面之间的链接。 提供自定义的大小...
然而,`<iframe>`的高度自适应问题常常困扰着开发者,尤其是当`<iframe>`内部的内容动态加载或者变化时,如何让`<iframe>`自动调整其高度以适应内容,而不会导致滚动条溢出或内容被截断,成为了一个常见需求。...
} // 当子页面大小改变时,通知父页面调整大小 ``` 通过以上步骤,`iframe-resizer`库能够确保`iframe`始终根据其内容自适应高度,无论内容是否跨域。 总结来说,实现`iframe`根据页面内容自适应高度和宽度,...
- 使用`iframeResizer`等插件可以自动调整`iframe`的大小,避免因内容变化导致的布局闪烁。 8. **总结** `iframe`通信涉及多个方面,包括同源策略、跨域通信、DOM操作和事件监听。理解并熟练掌握这些技巧对于开发...
1. **创建iframe**:在子页面HTML中,我们需要创建一个`iframe`元素,并设置相应的属性,如`src`指向要加载的页面,`width`和`height`定义弹出框的大小,以及`style`属性用于设置初始的隐藏状态。 2. **遮罩层**:...
为了解决这个问题,我们可以利用JavaScript来动态调整iframe的高度,确保它始终适应其内部内容的大小。 在描述中提到的方法是通过编写一段JavaScript代码,使得iframe能够根据其内部页面内容的高度自动调整。这段...
实现`iframe`高度自适应的基本思路是在页面加载完成或者窗口大小发生变化时,通过JavaScript动态计算嵌入内容的实际高度,并相应地调整`iframe`的高度。这种方法的核心在于编写合适的JavaScript函数来获取嵌入内容的...
提供多种页面大小计算方法,以支持复杂CSS布局。 检测对DOM的更改,该更改可能导致使用调整页面的大小。 检测可能导致页面调整大小的事件(“窗口调整大小”,“ CSS动画和过渡”,“方向改变”和“鼠标”事件)。 ...
2. **动态调整iframe的高度**:根据获取的高度动态地调整iframe的高度,确保内容能够完全展示,同时避免额外的滚动条出现。 #### 示例代码 以下是一个简单的示例,展示了如何使用JavaScript动态调整iframe的高度: ...
首先,我们要理解为什么需要动态调整Iframe的高度。由于Iframe的内容可能来自于不同的来源,其内容长度是不确定的,因此在页面加载时设置一个固定的高度往往无法满足需求。特别是当Iframe加载的内容包含大量文本、...
这在需要动态调整iframe高度以适应内容时会带来挑战。本文将深入探讨如何实现跨域控制iframe的高度,以优化用户体验。 首先,我们需要理解同源策略。同源策略是浏览器为了保障安全而实施的一项规定,它只允许...
// 检测遮挡情况并调整iframe位置 } } // 在下拉菜单显示时触发检查 document.querySelector('.dropdown').addEventListener('show.bs.dropdown', checkDropdownOverlap); ``` #### 3.4 CSS定位调整 有时,问题...
综上所述,要实现"js图片iframe内页父页展示全屏"的功能,我们需要在父页面通过`iframe`嵌入子页面,然后利用JavaScript监听窗口大小变化,动态调整`iframe`中图片的尺寸,以达到全屏显示的效果。同时,子页面的CSS...
下面是一个简单的示例,演示如何通过JavaScript来动态调整`iframe`的高度: ```html <iframe name="myframe" src="myframe.htm" frameborder="0" scrolling="auto" width="100%" height="100%" onload="document....
为了解决这个问题,我们需要一种方法来动态地调整`iframe`的高度,使其与内容匹配。这种技术通常涉及到JavaScript,通过监听`iframe`的`load`事件,然后获取`iframe`内的文档高度,并设置到`iframe`的`height`属性上...
4. 响应窗口大小变化:可以添加事件监听器,如window.onresize事件,根据窗口的大小变化来动态调整iframe的高度和宽度。 5. 使用窗口方法间接控制尺寸:可以通过iframe元素的contentWindow对象访问其内部窗口,进而...