Javascript 获取跨域iFrame内部文档的高度

Javascript 获取跨域iFrame内部文档的高度,javascript,jquery,iframe,cross-domain,Javascript,Jquery,Iframe,Cross Domain,我发现并正在使用以下问题和答案。我在引用父域的iFrame内部使用iFrame,以便将我的高度反馈给它。我完全理解这个概念,并且很容易实现。问题是,当我试图从jQuery获取$(document).height()时,或者仅仅通过document.body.scrollHeight获取$(document).height()时,当我的页面在iFrame中被引用时,我在所有浏览器中都会看到奇怪的结果 下面是我的页面上发生的一些背景信息。我正在进行一些ajax调用来搜索第三方提供商的服务,并根据结果

我发现并正在使用以下问题和答案。我在引用父域的iFrame内部使用iFrame,以便将我的高度反馈给它。我完全理解这个概念,并且很容易实现。问题是,当我试图从jQuery获取$(document).height()时,或者仅仅通过document.body.scrollHeight获取$(document).height()时,当我的页面在iFrame中被引用时,我在所有浏览器中都会看到奇怪的结果

下面是我的页面上发生的一些背景信息。我正在进行一些ajax调用来搜索第三方提供商的服务,并根据结果在我的页面中生成html,这是非常标准的东西。顺便说一下,我正在等待我的html被添加到DOM中,然后再获取文档的高度。以下是当我的页面位于iFrame内部时,$(document).height()的结果

FireFox 10.0.2,其中拾取的高度几乎比文档的实际高度小1000像素或更多

谷歌Chrome18.0.1025.162在大多数情况下都会选择正确的高度。有时,高度只会小几百个像素

Safari5的表现也和FireFox一样

我看过很多博客文章,上面都有代码显示这种行为。无论我是使用jQuery还是javascript文档对象都可以使用。我总是看到这些电话中的任何一个都会产生不一致的结果。我不得不相信其他使用过这种技术的人也遇到过这种情况

我不需要显示iFrame resize或helper iFrame的代码,因为它们按预期运行。我想展示的主要代码是,在ajax事件和dom操作完成后,如何从搜索表单启动调整大小过程:

function resizeMe() {
    var iFrameHelper = $("#iFrameHelper");
    iFrameHelper.attr("src", iFrameHelper.attr("data-url") + "?height=" + $(document).height() + "&cacheb=" + Math.random());
}

所以我最终发现了问题所在。$(document).height()部件工作正常。问题在于时机。ajax调用完成后,我在页面中呈现的项目包含图像,这些图像会导致请求从页面中发出以获取图像。图像上没有设置默认高度,因此在我更改页面内部iFrame上的src属性之前,没有正确计算高度,这将启动父对象上的调整大小

我最后做的只是为我所有的图片设置默认高度,因为它们共享相同的尺寸。我是在责怪伊夫拉姆斯,而不是我自己。因为这么简单的原因,我花了两天时间把头发拔了出来

我希望这对将来的其他人有所帮助