如何动态调整我的iframe大小,避免浏览器安全跨域限制?

Mar*_*ich 2 javascript security iframe dom cross-domain

我们有一个可嵌入的徽章,用于创建iframe.它需要是一个动态的大小; 它根据从第三方API或我们的数据库加载的数据更改大小.所以不知道它加载前的高度.

它使用从我们的服务器加载脚本的标记调用,该标记创建一个设置为特定src的iframe.

在我自己的机器上,我可以做iframe

window.parent.document.getElementById('my_frame').style.height=new_calculated_height+'px';
Run Code Online (Sandbox Code Playgroud)

但当然,当它嵌入在不同于iframe src的页面中时,由于跨域限制(FF中的"不安全访问尝试"错误等)而失败.

由于我们已经将脚本加载到具有完全访问权限的主机页面中,因此这有点愚蠢.

基本上,我需要从iframe到主机页面获取一个变量,即新的高度.

我可以反过来做吗?在主页上有一个函数询问iframe是否为元素的offsetHeight?

Chr*_*rey 7

这对于使用跨浏览器工作的屁股来说真的很痛苦.

我强烈建议您使用easyXDM(http://easyxdm.net/).它是一个JavaScript库,它在现代浏览器上使用PostMessage传输,并在旧浏览器上使用一些JavaScript忍者.

该库允许您在Iframe与其父级之间进行通信,即使它们不在同一个域中.

该库一直支持IE6!

编辑:实际上有一个示例在加载内容后动态调整Iframe的高度:http://easyxdm.net/wp/2010/03/17/resize-iframe-based-on-content/

  • 基督教