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

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

  • Cheese

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

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

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

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

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

    <iframe onload="checksize(this);"

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



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

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

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


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

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

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

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

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

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

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

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

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



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

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

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

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

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


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



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

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


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

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

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


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

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

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

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



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

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

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

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


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

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

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

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

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



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

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

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

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

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

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


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

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

    Вместо

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

    Пишем

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


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

  • Givi

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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