如何根据跨域内容设置iframe高度?

时间:2015-09-24 14:14:05

标签: jquery css iframe height

到处寻找解决方案。当内容来自其他域时,如何将iframe高度设置为iframe内容的大小?我正在使用以下JavaScript,但我得到permission denied to access property 'document',因为iframe内容来自其他域。

function resizeIframe(iframe) {
        if(iframe.contentWindow.document.body.scrollHeight < 500) {
          iframe.height = "500px";
        } else {
          iframe.height = iframe.contentWindow.document.body.scrollHeight + "px";
          }
  }

<iframe name="myiframe" id="myiframe" onload="setIframeHeight(this.id)...

我已经阅读了几个黑客,但他们都包括使用添加到iframe的第二个javascript文件将postMessage发送回父级。然而,这实际上并不是一个很好的解决方案,因为对于跨域内容,您没有他们的特权来将javascript文件添加到他们的服务器。

任何人有任何建议或替代解决方案吗?

1 个答案:

答案 0 :(得分:0)

  

我已经阅读了几个黑客,但他们都包括使用添加到iframe的第二个javascript文件将postMessage发送回父级。

是的,这是解决方案。

  

然而,这并不是一个很大的解决方案,因为对于跨域内容,您不具备将javascript文件添加到其服务器的特权。

如果您与其他网站没有足够的关系,可以帮助您了解页面在发送给您的共同访问者时的高度,那么您根本无法做到做到这一点。

要查找页面的高度,您需要访问DOM。

如果您有权访问DOM,则可以访问DOM的内容。

如果您可以访问DOM的内容,则可以将用户的浏览器发送到任何旧站点(例如,带有人员记录的公司内部网)并将数据复制到您的站点。

这将是一个巨大的安全漏洞,这就是为什么你需要其他网站的明确合作。