【发布时间】:2010-09-17 11:43:00
【问题描述】:
在我的 javascript 体验中,最困难的问题之一是正确(即“跨浏览器”)计算 iframe 高度。 在我的应用程序中,我有很多动态生成的 iframe,我希望它们都在加载事件结束时进行某种自动调整大小以调整它们的高度和宽度。
在 height 计算的情况下,我的最佳解决方案如下(在 jQuery 的帮助下):
function getDocumentHeight(doc) {
var mdoc = doc || document;
if (mdoc.compatMode=='CSS1Compat') {
return mdoc.body.offsetHeight;
}
else {
if ($.browser.msie)
return mdoc.body.scrollHeight;
else
return Math.max($(mdoc).height(), $(mdoc.body).height());
}
}
我搜索了互联网但没有成功。我还测试了雅虎库,它有一些文档和视口尺寸的方法,但并不令人满意。
我的解决方案效果不错,但有时它会计算出更高的高度。
我已经研究并测试了大量关于 Firefox/IE/Safari 中文档高度的属性:documentElement.clientHeight, documentElement.offsetHeight, documentElement.scrollHeight, body.offsetHeight, body.scrollHeight, ...
此外,jQuery 在各种浏览器中没有连贯的行为,调用 $(document.body).height(), $('html', doc).height(), $(window).height()
我不仅在加载事件结束时调用上述函数,而且在动态插入 DOM 元素或隐藏或显示元素的情况下也调用。这种情况有时会破坏仅在加载事件中有效的代码。
有人有真正的跨浏览器(至少是 Firefox/IE/Safari)解决方案吗?一些提示或提示?
【问题讨论】:
-
我现在正在处理这个问题。你找到解决办法了吗?
标签: javascript jquery iframe