如何在跨域中获取 iframe contentWindow 高度

Posted

技术标签:

【中文标题】如何在跨域中获取 iframe contentWindow 高度【英文标题】:How to get iframe contentWindow height in cross domain 【发布时间】:2011-04-09 17:15:06 【问题描述】:

我想根据他们的内容自动调整我的 iframe 高度,但在同一个域中,它可以与 contentWindow.height 正常工作,但在跨域的情况下,它访问 iframe dom 的权限被拒绝。

【问题讨论】:

【参考方案1】:

对于现代浏览器,您可以使用window.postMessage 函数在属于两个不同域的 iFrame 之间进行通信。

还有几个 jQuery 插件使用旧的 URL 散列技术包装 window.postMessage,用于不支持 window.postMessage 的浏览器。它使该技术的使用对最终用户透明。

您可以从这里查看以下页面(并且可能借用您需要的 javascript):

Lutron - Ballast Selection Tool

带有下拉菜单的工具实际上是从单独的域加载到 iFrame 中的。然后根据内部内容的高度动态调整 iFrame 的大小。

【讨论】:

我支持使用 postMessage。这是一个简单的例子:***.com/questions/5606920/cross-domain-iframe-resizer/….

以上是关于如何在跨域中获取 iframe contentWindow 高度的主要内容,如果未能解决你的问题,请参考以下文章

iframe子页面在跨域情况下使用父页面的方法

检测此页面是不是在跨域 iframe 内部的万无一失的方法

我们可以在跨域中使用 Jquery $.ajax() 调用通过 https 访问 WCF 服务吗?

iframe跨域获取父页面url

获取不同域中的iframe父名称[重复]

在 iframe 跨域中捕获点击位置