我在这里找到并使用了以下 stackoverflow 问题和答案。我正在使用 iFrame 内部的 iFrame 来引用父域,以便将我的身高传达给它。我完全理解这个概念,并且很容易实现。问题是,当我尝试从 jQuery 或仅通过 document.body.scrollHeight 获取 $(document).height() 时,当我的页面在 iFrame 内被引用时,我在所有浏览器中都看到了奇怪的结果。
这是我页面上发生的事情的一些背景。我正在做一些 ajax 调用来搜索第三方提供商的服务,并根据结果在我的页面内生成 html,这是非常标准的东西。顺便说一句,我正在等待将我的 html 添加到 DOM 中,然后再获取文档的高度。这是我的页面位于 iFrame 内时 $(document).height() 的结果。
FireFox 10.0.2,其中拾取的高度几乎比文档的实际高度小 1000 像素或更多。
Google Chrome 18.0.1025.162 在大多数情况下会选择正确的高度。有时高度仅小几百像素。
Safari 5 的行为也与 FireFox 一样。
我看过许多博客文章,其中包含显示行为的代码。我是否使用 jQuery 或 javascript 文档对象对我可用的东西都没有关系。我总是看到来自这些电话中的任何一个的结果不一致。我必须相信其他使用过这种技术的人也遇到过这种情况。
我不需要显示我的 iFrame 调整大小或辅助 iFrame 的代码,因为它们按预期运行。我要展示的主要代码是在 ajax 事件和 dom 操作完成后如何从搜索表单开始调整大小过程:
function resizeMe() {
var iFrameHelper = $("#iFrameHelper");
iFrameHelper.attr("src", iFrameHelper.attr("data-url") + "?height=" + $(document).height() + "&cacheb=" + Math.random());
}