Вот, столкнулся с такой проблемой, нужен был js скрипт для корректного определения высоты <iframe>. Поискав в гугле и испробовав с десяток различных вариантов,но к сожалению, я так и не смог добиться желаемого результата. В итоге, абсолютно случайно изучая проект www.eqdkp.com наткнулся на скрипт решивший все мои проблемы. И так, непосредственно перед <iframe> располагаете данный скрипт:
<script type="text/javascript"> var iframeids=["boardframe"] var iframehide="no" var getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1] var FFextraHeight=parseFloat(getFFVersion)>=0.1? 3 : 0 //extra height in px to add to iframe in FireFox 1.0+ browsers function resizeCaller() { var dyniframe=new Array() for (i=0; i<iframeids.length; i++){ if (document.getElementById) resizeIframe(iframeids) //reveal iframe for lower end browsers? (see var above): if ((document.all || document.getElementById) && iframehide=="no"){ var tempobj=document.all? document.all[iframeids] : document.getElementById(iframeids) tempobj.style.display="block" } } } function resizeIframe(frameid){ var currentfr=document.getElementById(frameid) if (currentfr){ currentfr.style.display="block" if (currentfr.contentDocument && currentfr.contentDocument.body.offsetHeight) //ns6 syntax currentfr.height = currentfr.contentDocument.body.offsetHeight+FFextraHeight; else if (currentfr.Document && currentfr.Document.body.scrollHeight) //ie5+ syntax currentfr.height = currentfr.Document.body.scrollHeight; else if (currentfr.contentWindow && currentfr.contentWindow.body.document.scrollHeight) //Opera? currentfr.style.height = currentfr.contentWindow.document.body.scrollHeight; if (currentfr.addEventListener) currentfr.addEventListener("load", readjustIframe, false) else if (currentfr.attachEvent){ currentfr.detachEvent("onload", readjustIframe) // Bug fix line currentfr.attachEvent("onload", readjustIframe) } } } function readjustIframe(loadevt) { var crossevt=(window.event)? event : loadevt var iframeroot=(crossevt.currentTarget)? crossevt.currentTarget : crossevt.srcElement if (iframeroot) resizeIframe(iframeroot.id); } function loadintoIframe(iframeid, url){ if (document.getElementById) document.getElementById(iframeid).src=url } if (window.addEventListener) window.addEventListener("load", resizeCaller, false) else if (window.attachEvent) window.attachEvent("onload", resizeCaller) else window.onload=resizeCaller </script>
А затем идет сам <ifram>, обязательно с id=»boardframe», как пример:
<iframe onload="window.scrollTo(0,0)" src="http://teaseo.ru id="boardframe" allowtransparency="true" height="" width="99%" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" vspace="0" hspace="0"></iframe>
Дмитрий says:
если этот скрипт применяется для iframe,в который загружается страница из другого домена, то ничегошеньки не получится. Ошибка Разрешение отклонено.
только для страниц с того же домена!
admin says:
Сорри, действительно забыл уточнить это.
Rus says:
В Опере не работает. В FF и IE фрейм меняет размеры, но вертикальный скролл все равно виден. Т.е. нужно, где-то, прибавить еще пикселей 10-20… Не могли бы вы помочь с Оперой?
Владимир says:
Здравствуйте! Отличный скрипт работает хорошо, но в ie как всегда подкачивает… в ie9 нормально отображаеться, а вот все что ниже… фрайм обрезается, как сделать чтобы в ie8 тоже нормально отображалось?