Динамический параметр высоты в inframe

but3

Здравствуйте! Продолжу тему... Есть инфрэйм с "резиновым" значением Height... всё работает,но почему то под мозилой и IE не пашет именно когда инфрэйм обрамлён скриптом((( Очень прошу, помогите подружить эту функцию и для мозилы с эксплорером!Если не сложно распишите подробно полностью скорректированный код... Вот сам скрипт, отвечающий за автоматическое растягивание инфрэйма по параметру Height:
<script src="http://yandex.st/jquery/2.0.3/jquery.min.js"></script> 
<script> 
function doIframe(){ 
o = document.getElementsByTagName('iframe'); 
for(i=0;i<o.length;i++){ 
if (/\bautoHeight\b/.test(o[i].className)){ 
setHeight(o[i]); 
addEvent(o[i],'load', doIframe); 
} 
} 
} 
 
function setHeight(e){ 
if(e.contentDocument){ 
e.height = e.contentDocument.body.offsetHeight + 35; 
} else { 
e.height = e.contentWindow.document.body.scrollHeight; 
} 
} 
 
function addEvent(obj, evType, fn){ 
if(obj.addEventListener) 
{ 
obj.addEventListener(evType, fn,false); 
return true; 
} else if (obj.attachEvent){ 
var r = obj.attachEvent("on"+evType, fn); 
return r; 
} else { 
return false; 
} 
} 
 
if (document.getElementById && document.createTextNode){ 
addEvent(window,'load', doIframe); 
} 
</script>
Ну а это сам имфрэйм обрамлённый скриптом, который вызывает именно графу ЛЮБИМЫХ СМАЙЛОВ который должен по идее автоматически растягиваться по Height:
<script>document.write("<iframe class='autoHeight' allowtransparency='true' frameborder='no' width='200' scrolling='no' name=sml src=index.php?inc=smile&table=2-31-0&frame=1&cat=fav&"+parent.yourkey+"></iframe>");</script>
5 ответов

but3

14 e.style.height = (e.contentDocument.body.offsetHeight + 35) + 'px'; 15 } else { 16 e.style.height = e.contentWindow.document.body.scrollHeight + 'px';


but3

Благодарю, код работает, но...есть но - когда я скрываю дивом инфрэйм, опять не пашет-поле смайликов не появляеться, опять же под эксплорером и мазилой((( Под хромом и оперой всё нормально... скрытие дивом инфрэйма у меня вот так прописано:
<div id=hide4 style="display:none" align="center">
 
<script>document.write("<iframe class='autoHeight' allowtransparency='true' frameborder='no' width='330' scrolling='no' name=sml src=index.php?inc=smile&table=2-31-0&frame=1&cat=fav&"+parent.yourkey+"></iframe>");</script>
 
</div>
 
<center><a href=# onclick="obj=document.getElementById('hide4'); if(obj.style.display=='none') obj.style.display='block'; else obj.style.display='none'; return false;">показать/скрыть смайлы</a>
 
</center>


but3

непонятно, что именно у вас не работает?


but3

Да, извиняюсь ифрейм!!! Что касаемо проблемы,я же написал при нажатии на ссылку "показать/скрыть смайлы" они не появляються, убираю дивы - код работает, с дивами нет, а мне нужно чтобы блок смайлов был скрыт и открывался только при нажатии и естественно с динамическим параметром Height.


but3

нагородили огород
<script>
var txt  = '<iframe id="mIFR" class="autoHeight" allowtransparency="true" frameborder="no"';
    txt += ' width="330" scrolling="no" name="sml" style="visibility: hidden" src="URL" ';
    txt += 'onload="this.style.height = ((this.contentWindow || this.contentDocument)';
    txt += '.document.body.scrollHeight + 35) + \'px\'"></iframe>';
document.write (txt);
</script>
<p><input type="button" value="Показать"
          onclick="var w = (this.value == 'Скрыть');
                   document.getElementById ('mIFR').style.visibility = w ? 'hidden' : 'visible';
                   this.value = w ? 'Показать' : 'Скрыть'">
и никаких лишних div'ов не надо