我一直在努力奋斗这一整天,令人难以置信。我在我的网站上有一个选项,用户可以在某个用户下载完整的聊天记录,而不是在线加载,最有可能导致浏览器崩溃。无论如何,当他们要求下载他们的历史记录时,正在创建一个zip存档,其中包含每天都有历史记录的文件 - 如果他们没有足够强大的机器来同时打开它们,并且索引文件包含所有历史文件iframe的形式(而不是在2个地方写相同的内容)。
问题:我想要做的就是将Iframe的高度设置为等于其内容的高度,令人惊讶的是,由于其同源政策,这在Chrome中看起来不太公平。我首先想到的是我可以让孩子的iframe的身体滚动,并且没事,但是SOP说不,并且打了我的脸。然后我想我可以从历史文件内部将html标签的style.height设置为其完整高度,然后检索它,但也失败了。
我真的开始失去希望,任何人都可以帮助我吗?
答案 0 :(得分:1)
在iframe内容的页面和您调用iframe的页面中,输入:
<script>
document.domain = 'http://yoursite.com'; (NOT www.)
</script>
另外,请务必调出iframe,不要www.
,
执行:<iframe onload = "setIframeHeight( this.id )" ...>
和iFrameHeight()
如下:
<script>
document.domain = 'http://yoursite.com';
function setIframeHeight( iframeId )
{
var ifDoc, ifRef = document.getElementById( iframeId );
try
{
ifDoc = ifRef.contentWindow.document.documentElement;
}
catch( e )
{
try
{
ifDoc = ifRef.contentDocument.documentElement;
}
catch(ee)
{
}
}
if( ifDoc )
{
ifRef.height = 1;
ifRef.height = ifDoc.scrollHeight;
}
</script>
我根本不确定这对你有用,但对我而言确实如此。
答案 1 :(得分:0)
Marakana TechTV上的这个视频包含了无缝iframe集成的好技巧:
iFrame usage with postMessage and seamless emulation at DisQus
此外,还有一个jQuery插件(未经测试)声称提供了功能。