ФорумПрограммированиеJavaScript → Как подогнать высоту ифрейма под содержимое?

Как подогнать высоту ифрейма под содержимое?

  • Cheese

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 10 декабря 2008 г. 7:35

    В ифрейме выдается несколько страниц содержащие данные разной высоты.
    Можно ли "в полете" подрегулировать фрейм под высоту содержимого?
  • phpdude

    Сообщения: 26618 Репутация: N Группа: в ухо

    Spritz 10 декабря 2008 г. 7:38, спустя 2 минуты 46 секунд

    <iframe onload=&quot;checksize(this);&quot;

    <script>
    function schecksize(elem)
    {
    elem.style.height = elem.getElementsByTagName(&quot;body&quot;)[0].scrollHeight;
    }



    думаю нечто такое копать надо:)
    Сапожник без сапог
  • Cheese

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 10 декабря 2008 г. 12:45, спустя 5 часов 6 минут 24 секунды


    думаю нечто такое копать надо:)

    Не прошло
    На:
    <iframe onload=&quot;checksize(this);&quot;

    IE говорит - &quot;Предполагается наличие объекта&quot;
    Я могу предположить что у тега ифрейм нет свойства onload….
  • phpdude

    Сообщения: 26618 Репутация: N Группа: в ухо

    Spritz 10 декабря 2008 г. 12:59, спустя 14 минут 40 секунд

    я предполагаю что ие не понимает слово this для ифрейма чтоли(
    Сапожник без сапог
  • Cheese

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 10 декабря 2008 г. 14:19, спустя 1 час 19 минут 43 секунды

    Всем кто захочет наступить вслед за мной на эти грабли посвящается чудное решение от разработчиков джумлы:



    <script language=&quot;javascript&quot; type=&quot;text/javascript&quot;>
    function iFrameHeight() {
    var h = 0;
    if ( !document.all ) {
    h = document.getElementById(&#39;blockrandom&#39;).contentDocument.height;
    document.getElementById(&#39;blockrandom&#39;).style.height = h + 60 + &#39;px&#39;;
    } else if( document.all ) {
    h = document.frames(&#39;blockrandom&#39;).document.body.scrollHeight;
    document.all.blockrandom.style.height = h + 20 + &#39;px&#39;;
    }
    }
    </script>

    <iframe
    id=&quot;blockrandom&quot;
    name=&quot;iframe&quot;
    src=НашаСцылко
    width=&quot;100%&quot;
    onload=&quot;iFrameHeight()&quot;
    scrolling=&quot;no&quot;
    align=&quot;top&quot;
    frameborder=&quot;0&quot;
    >

    Работает во всех браузерах(включая хром и сафари) кроме Оперы…
    Тому кто придумает как подружить это с музыкальным браузером будет вечный респект :)
  • phpdude

    Сообщения: 26618 Репутация: N Группа: в ухо

    Spritz 10 декабря 2008 г. 14:24, спустя 5 минут 22 секунды


    Всем кто захочет наступить вслед за мной на эти грабли посвящается чудное решение от разработчиков джумлы:



    <script language=&quot;javascript&quot; type=&quot;text/javascript&quot;>
    function iFrameHeight() {
    var h = 0;
    if ( !document.all ) {
    h = document.getElementById(&#39;blockrandom&#39;).contentDocument.height;
    document.getElementById(&#39;blockrandom&#39;).style.height = h + 60 + &#39;px&#39;;
    } else if( document.all ) {
    h = document.frames(&#39;blockrandom&#39;).document.body.scrollHeight;
    document.all.blockrandom.style.height = h + 20 + &#39;px&#39;;
    }
    }
    </script>

    <iframe
    id=&quot;blockrandom&quot;
    name=&quot;iframe&quot;
    src=НашаСцылко
    width=&quot;100%&quot;
    onload=&quot;iFrameHeight()&quot;
    scrolling=&quot;no&quot;
    align=&quot;top&quot;
    frameborder=&quot;0&quot;
    >


    интересно чем это отличается от моего решения :-D
    Сапожник без сапог
  • Cheese

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 10 декабря 2008 г. 14:27, спустя 2 минуты 46 секунд


    интересно чем это отличается от моего решения :-D

    Честно? Низнаю…. Но это работает… А Ваш вариант не проходил…. Может я чегой-то криво скопипастил… Низнаю
    Насчет оперы есть идеи?
  • phpdude

    Сообщения: 26618 Репутация: N Группа: в ухо

    Spritz 10 декабря 2008 г. 14:29, спустя 1 минуту 41 секунду



    интересно чем это отличается от моего решения :-D

    Честно? Низнаю…. Но это работает… А Ваш вариант не проходил…. Может я чегой-то криво скопипастил… Низнаю
    Насчет оперы есть идеи?
    может и криво, ибо я только недоделанный пример написал, где надо было теги проставить да указать че нить по мелочи :) короче &quot;натолкнул на мысль&quot; (с). у жумлы решение точно такое же.
    Сапожник без сапог
  • Cheese

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 10 декабря 2008 г. 14:35, спустя 6 минут 15 секунд


    у жумлы решение точно такое же.

    получается, что те кто юзает динамические враперы в джумле 1.5 попадают на грабли с оперой 9.6х?

    … проверил …точно попадалово
  • phpdude

    Сообщения: 26618 Репутация: N Группа: в ухо

    Spritz 10 декабря 2008 г. 16:47, спустя 2 часа 12 минут 2 секунды



    у жумлы решение точно такое же.

    получается, что те кто юзает динамические враперы в джумле 1.5 попадают на грабли с оперой 9.6х?

    … проверил …точно попадалово

    опера это вообще попадалово. нелюблю этот браузер со времен когда их доля рынка была ~ 0
    Сапожник без сапог
  • Spawn

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 13 августа 2009 г. 6:24, спустя 245 дней 12 часов 37 минут


    Работает во всех браузерах(включая хром и сафари) кроме Оперы…
    Тому кто придумает как подружить это с музыкальным браузером будет вечный респект :)

    А вот и решение, ребяточки ;)

    Вместо

    <script language=&quot;javascript&quot; type=&quot;text/javascript&quot;>
    function iFrameHeight() {
    var h = 0;
    if ( !document.all ) {
    h = document.getElementById(&#39;blockrandom&#39;).contentDocument.height;
    document.getElementById(&#39;blockrandom&#39;).style.height = h + 60 + &#39;px&#39;;
    } else if( document.all ) {
    h = document.frames(&#39;blockrandom&#39;).document.body.scrollHeight;
    document.all.blockrandom.style.height = h + 20 + &#39;px&#39;;
    }
    }
    </script>

    Пишем

    <script language=&quot;javascript&quot; type=&quot;text/javascript&quot;>
    function iFrameHeightX( iFrameId ) {
    var h = 0;
    if ( document.all || document.getElementById ) {
    h = document.frames(iFrameId).document.body.scrollHeight;
    document.all[iFrameId].style.height = h + &#39;px&#39;;
    }
    }
    </script>


    Теперь работает и EI и Opera. На других не проверял. И ещё: этот код из джумлы 1.0, а написанный выше из 1.5. Надеюсь кому-нить это поможет.

  • Givi

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 13 августа 2009 г. 7:01, спустя 37 минут 12 секунд


    Теперь работает и EI и Opera. На других не проверял. И ещё: этот код из джумлы 1.0, а написанный выше из 1.5. Надеюсь кому-нить это поможет.

    Дуд прав - Джумла-разработчики таки долбоёбы. Нахера было изменять код, который работал нормально везде (как указано постом выше) и заменять на полурабочий!?
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 13 августа 2009 г. 7:08, спустя 6 минут 19 секунд

    Дуд прав - Джумла-разработчики таки долбоёбы. Нахера было

    использовать document.all и document.frames
  • phpdude

    Сообщения: 26618 Репутация: N Группа: в ухо

    Spritz 13 августа 2009 г. 7:11, спустя 3 минуты 43 секунды

    я бы остановился тут

    Дуд прав - Джумла-разработчики таки долбоёбы
    (с) дуд
    Сапожник без сапог
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 13 августа 2009 г. 7:15, спустя 4 минуты 1 секунду

    Джумла-разработчики такие Джумла-разработчики….

Пожалуйста, авторизуйтесь, чтобы написать комментарий!