iframe动态高度resize

嗨,我目前有2页(index.html和iframe_contents.html)。 两者都在同一个域上。

我目前正在尝试根据内容大小动态调整iframe大小。

我正在使用它来帮助我http://benalman.com/code/projects/jquery-resize/examples/resize/如果iframe_contents body标记在Firefox和IE 7/8/9上变得更大或更小,它可以工作webkit它只能成长,永远不会缩小

我已将它缩小到iframe_contents.html中的body标签,而不是在内容高度更改时缩小,而是仅在iframe中缩小。 当iframe_contents.html不在iframe中时,如果缩小/放大元素,则主体整体高度会发生变化。

这是一个特定于webkit的问题吗?

在这里阅读了很多答案后,他们都有同样的问题,在需要时不调整小尺寸。 我认为大多数人只是在框架加载后进行一次性的大小调整,所以也许不在乎。 我需要在窗口大小改变时再次resize。 所以对我来说,如果他们让窗户缩小,那么iframe会变得非常高,那么当他们使窗户变大时,它应该再次缩短。 在某些浏览器上没有发生这种情况,因为我在使用DOM检查器(FireBug / Chrome开发工具)时可以找到的scrollHeight,clientHeight,jquery height()和任何其他高度都没有在iframe之后报告身体或html高度更短做得更广。 像身体有最小高度100%设置或什么。

对我来说,解决方案是使iframe 0高度,然后检查scrollHeight,然后设置为该值。 为了避免我的页面上的滚动条跳转,我将父级(包含iframe)的高度设置为iframe高度,以便在执行此操作时保持总页面大小不变。

我希望我有一个更清洁的样本,但这里是我的代码:

$(element).parent().height($(element).height()); $(element).height(0); $(element).height($(element).contents().height()); $(element).parent().height(""); 

元素是我的iframe。

iframe具有宽度:100%样式集,并且位于具有默认样式(块)的div内。

代码是jquery,并将div高度设置为iframe高度,然后将iframe设置为0高度,然后将iframe设置为内容高度。 如果我删除将iframe设置为0高度的行,iframe将在需要时变大,但从不变小。

这可能对您没什么帮助,但这是我们在iframe_contents.html页面中的function。 它将尝试以一种自resize,跨浏览器,纯JavaScript的方式调整加载iframe的大小:

 function makeMeFit() { if (top.location == document.location) return; // if we're not in an iframe then don't do anything if (!window.opera && !document.mimeType && document.all && document.getElementById) { parent.document.getElementById('youriframeid').style.height = (this.document.body.offsetHeight + 30) + "px"; } else if (document.getElementById) { parent.document.getElementById('youriframeid').style.height = (this.document.body.scrollHeight + 30) + "px" } } 

您可以在resize()事件中或在更改页面高度的事件之后调用它。 该方法中的function测试应该分离WebKit浏览器并选择正确的height属性。