当文档改变大小时,调整iframe的大小
Resizing iframe when document changes size
我有一个在iframe(同一域)中运行的应用程序的网页。iframe的高度在加载时根据iframe文档的高度设置。问题是当框架文档的大小被改变(通过展开手风琴,菜单等)。当这种情况发生时,是否触发了任何事件,我可以使用这些事件来相应地调整iframe元素的大小?
我已经尝试绑定到iframe中窗口对象上的resize事件,但由于当文档内容更改时窗口没有调整大小,因此事件不会触发。我需要的是文档对象上的某种大小调整事件,但据我所知,没有这样的事情。有没有其他方法可以检测文档高度的变化?
我希望有一个通用的解决方案,因为我不知道iframe的确切内容,但我可以在其中包含通用脚本。
为iframe窗口触发了大小调整事件。你可以听他们(在iframe本身),然后触发一些函数在父窗口传播新的大小和更新父窗口的iframe的大小。
您是否尝试使用scroll
事件并将其附加到iFrame的contentWindow ?
否则,我宁愿建议您直接挂钩到手风琴,而不是依赖于捕获可能发生或可能不发生的滚动事件。因为scroll只会在用户滚动滑动条时触发,而不会在手风琴展开时触发。
但是当用户展开手风琴时,你可以简单地在父类上调用一个方法,将手风琴的新大小传递给它。
我找到了一个可能的,但不是理想的解决方案,它并不是在所有浏览器中工作:
通过在iframe中绑定body元素的domsubtreemomodified,我可以在parent或top中找到iframe元素并改变它的高度。
$('body').bind('DOMSubtreeModified', function(){
top.document.getElementById('appFrame').height = $(document).height();
});
下面是浏览器对该事件支持的概述:http://www.quirksmode.org/dom/events/
如果你使用jQuery ui,那么你可以使用事件change
和调用函数
setHeight
http://jqueryui.com/demos/accordion/function setHeight() {
parent.document.getElementById('the-iframe-id').height = document['body'].offsetHeight;
}
- Firefox:根据实际内容调整iframe的大小
- 如何调整跨域url中iframe的大小
- Iframe加载调整大小在Chrome中工作,但不能在IE或Firefox中工作
- 如果iframe通过单击加载,则自动调整iframe大小无效
- 在内容刷新或更新时调整iframe的大小
- Iframe 调整大小和跨站点脚本
- iframe调整器不起作用/源页面甚至无法滚动
- JavaScript 跨域 iframe 调整大小
- iOS 中的 iframe 调整大小问题(持续闪烁)
- jquery与否/跨浏览器兼容iframe调整大小(IE、Chrome、Safari、Firefox)
- 如何在iframe调整大小时重置父窗口滚动条
- 使用iFrame调整器时,填充到调整大小的iFrame的顶部
- 颜色框iframe调整大小
- 未定义Iframe调整器
- 当内容小于默认大小(300x150)时,Iframe调整大小
- @davidjbradshaw's iframe调整器在移动浏览器中不能正常工作
- 未捕获的安全错误端口问题:Iframe调整大小
- IFrame调整器没有调整大小
- Iframe调整器没有调整大小
- 跨域iframe调整器