我们有一个可嵌入的徽章,用于创建iframe。它需要是一个动态的大小;它根据从第三方API或我们的数据库加载的数据更改大小。所以不知道它加载前的高度。
使用从我们的服务器加载脚本的标记来调用它,这会创建一个设置为特定src的iframe。
在我自己的机器上,在我可以做的iframe中
window.parent.document.getElementById('my_frame').style.height=new_calculated_height+'px';
但当然,当它嵌入在不同于iframe src的页面中时,由于跨域限制(FF中的“不安全访问尝试”错误等)而失败。
由于我们已经将脚本加载到具有完全访问权限的主机页面中,这有点愚蠢。
基本上,我需要从iframe到主页中获取一个新的高度变量。
我可以反过来做吗?在主页上有一个函数询问iframe是否为元素的offsetHeight?
答案 0 :(得分:7)
这对于在浏览器中工作非常困难。
我强烈建议您使用easyXDM(http://easyxdm.net/)。它是一个JavaScript库,它在现代浏览器上使用PostMessage传输,并在旧浏览器上使用一些JavaScript忍者。
该库允许您在Iframe与其父级之间进行通信,即使它们不在同一个域中。
图书馆一直支持IE6!
编辑:实际上有一个示例可以在加载内容后动态调整Iframe的高度:http://easyxdm.net/wp/2010/03/17/resize-iframe-based-on-content/
答案 1 :(得分:0)
虽然我对这种情况没有特别的经验但引用以下内容不会有害:Cross Domain Iframe Resize
答案 2 :(得分:0)
根据您尝试加载的页面的简单性,您可以尝试使用PHP加载它并在构建HTML时暴露一些变量(如果这甚至是一个选项,当然)。
例如,您可以使用file_get_contents加载它,使用一些正则表达式来查找img的宽度和高度,然后在回显iframe时使用这些值。