Javascript 文档大小更改时调整iframe的大小

Javascript 文档大小更改时调整iframe的大小,javascript,jquery,iframe,Javascript,Jquery,Iframe,我有一个网页,其中一个应用程序运行在iframe(同一个域)中。iframe的高度是基于iframe文档的高度在加载时设置的。问题是当iframed文档的大小改变时(通过展开手风琴、菜单等)。发生这种情况时是否触发了任何事件,我可以使用这些事件相应地调整iframe元素的大小 我曾尝试绑定到iframe中窗口对象的resize事件,但由于文档内容更改时窗口未调整大小,因此事件不会触发。我需要的是文档对象上的某种调整大小事件,但据我所知,没有这样的事情。是否有其他方法可以检测文档高度的变化 我希望

我有一个网页,其中一个应用程序运行在iframe(同一个域)中。iframe的高度是基于iframe文档的高度在加载时设置的。问题是当iframed文档的大小改变时(通过展开手风琴、菜单等)。发生这种情况时是否触发了任何事件,我可以使用这些事件相应地调整iframe元素的大小

我曾尝试绑定到iframe中窗口对象的resize事件,但由于文档内容更改时窗口未调整大小,因此事件不会触发。我需要的是文档对象上的某种调整大小事件,但据我所知,没有这样的事情。是否有其他方法可以检测文档高度的变化


我希望有一个通用的解决方案,因为我不知道iframe的确切内容,但我可以在其中包含通用脚本。

有针对iframe窗口的调整大小事件。您可以监听它们(在iframe本身中),然后在父窗口中触发一些函数来传播新的大小并更新父窗口中的iframe大小。

您是否尝试过使用
滚动事件并将其附加到iframe的contentWindow

否则,我宁愿建议你直接挂在手风琴上,而不是依靠捕捉可能发生或不可能发生的滚动事件。 因为只有在用户实际滚动滑块时才会触发滚动,而不是在手风琴展开时


但是,当用户扩展手风琴并将其传递给新大小的手风琴时,您可以简单地在父级上调用一个方法。

如果您使用的是jQuery ui,那么您可以使用event
change
和call函数

setHeight


我找到了一个可能但并不理想的解决方案,但它并不适用于所有浏览器:

通过绑定到iframe中body元素的domsubtreemeding,我可以在parent或top中找到iframe元素并更改其高度

$('body').bind('DOMSubtreeModified', function(){
    top.document.getElementById('appFrame').height = $(document).height();
});
以下是此活动的浏览器支持概述:

谢谢,但我需要一个事件来绑定setHeight函数调用。查看JQueryuiyah手风琴上的事件变化,但问题不限于手风琴;我还需要检测改变文档大小的其他内容更改。看起来我不得不接受在各种插件中使用回调,不过…@Jørgen,正如你所说,页面是从同一个域加载的?那么为什么不使用ajax代替iframe来加载内容呢?这当然是最好的,但迁移的成本是个问题。
$('body').bind('DOMSubtreeModified', function(){
    top.document.getElementById('appFrame').height = $(document).height();
});