4

В iframe будет подгружаться страница с другого домена. На этой странице можно будет просматривать разные категории товаров, поэтому нужно, чтоб фрейм растягивался или стягивался по высоте в зависимости от того, что в настоящий момент в нем отображается.

Вот здесь есть решение, но оно не работает, когда во фрейм подгружается страница с другого домена: http://www.lost-in-code.com/programming/jquery-auto-iframe-height/

2
  • А вручную узнавать размер документа внутри фрейма не пробовали? Что-нибудь типа iframe.document.offsetHeight ?
    – cy6erGn0m
    1 мар 2011 в 12:46
  • Посмотрите приложения вконтакте - там эта проблема как-то решена=) И стороннее приложение может менять размер ифрейма в широких пределах. Хотя... Там всё делается с запроса загруженной странички, которая свою высоту заведомо знает .-. 1 мар 2011 в 12:54

1 ответ 1

4

То, что тут: http://www.lost-in-code.com/programming/jquery-auto-iframe-height/ совсем не jquery и не имеет к оному никакого отношения :)

function doIframe(){
    o = document.getElementsByTagName('iframe');
    for(i=0;i<o.length;i++){
        if (/\bautoHeight\b/.test(o[i].className)){
            setHeightIframe(o[i]);
            $(o[i]).load(function() { doIframe(); });
        }
    }
}

function setHeightIframe(e){
    if(e.contentDocument){
        $(e).height(e.contentDocument.body.offsetHeight + 35);
    } else {
        $(e).height(e.contentWindow.document.body.scrollHeight);
    }
}

doIframe() нужно вызвать после загрузки iframe, у которого класс будет стоять autoHeight. Чтобы данный код работал, нужно использовать document.domain и выставлять его в соответствии с доменом, с которого грузится iframe, тогда браузеры будут "пускать" в iframe.

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.