JS Скрипт определяющий высоту iframe

Вот, столкнулся с такой проблемой, нужен был 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://eddnet.org id="boardframe" allowtransparency="true" 
height="" width="99%" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" vspace="0" hspace="0"></iframe>

Случайные Статьи

Loading…


Количество просмотров :4666

4 Comments

  1. Дмитрий:

    если этот скрипт применяется для iframe,в который загружается страница из другого домена, то ничегошеньки не получится. Ошибка Разрешение отклонено.
    только для страниц с того же домена!

  2. Rus:

    В Опере не работает. В FF и IE фрейм меняет размеры, но вертикальный скролл все равно виден. Т.е. нужно, где-то, прибавить еще пикселей 10-20… Не могли бы вы помочь с Оперой?

  3. Владимир:

    Здравствуйте! Отличный скрипт работает хорошо, но в ie как всегда подкачивает… в ie9 нормально отображаеться, а вот все что ниже… фрайм обрезается, как сделать чтобы в ie8 тоже нормально отображалось?

Оставьте коментарий