I've been struggling with this for a whole day, unbelievable. I have an option at my site where users can download a full chat history with a certain user, instead of loading it online and most probably crashing their browser. Anyhow, when they request to download their history a zip archive is being created which contains files with history for each day - in case they do not have a strong enough machine to open them all at once and an index file which contains all history files in the form of Iframes ( instead of having the same content written on 2 places ).
The problem: All I want to do is set the Iframe's height equal to its content's height, amazingly this seems unfairly impossible in chrome due to its same-origin policy. I first thought I could just get the child Iframe's body scrollHeight and be alright but then SOP said NO and smacked me across the face. Then I figured I could set the html tag's style.height to its complete height internally from the history file and then retrieve it but that failed as well.
I am really starting to lose hope, can anyone help me out?
In the page of the iframe content and the page where you call the iframe, put this:
<script>
document.domain = 'http://yoursite.com'; (NOT www.)
</script>
Also make sure you call the iframe WITHOUT www.
,
Do: <iframe onload = "setIframeHeight( this.id )" ...>
and iFrameHeight()
goes like:
<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>
I'm not sure at all if this will work for you, but for me it did.