<iframe> - Как показать всю высоту ссылочной страницы? - PullRequest
8 голосов
/ 12 сентября 2008

У меня есть приложение, которое я хотел бы встроить в CMS нашей компании. Единственный способ сделать это (мне сказали), это загрузить его в <iframe>.

Easy: просто установите height и width на 100%! За исключением того, что это не работает.

Я узнал о настройке frameborder в 0, так что по крайней мере выглядит как часть сайта, но я бы предпочел не иметь уродливой полосы прокрутки внутри страница, на которой она уже есть.

Знаете ли вы какие-нибудь хитрости, чтобы сделать это?

РЕДАКТИРОВАТЬ: Я думаю, мне нужно уточнить мой вопрос несколько:

  • компания CMS отображает пух и прочее для всего нашего сайта
  • большинство страниц, созданных с помощью CMS
  • моего приложения нет, но они позволят мне встроить его в <iframe>
  • У меня нет контроля над iframe, поэтому любое решение должно работать со ссылочной страницы (согласно атрибуту src тега iframe)
  • CMS отображает нижний колонтитул, поэтому установка высоты в 1 миллион пикселей не является хорошей идеей

Могу ли я получить доступ к DOM родительских страниц с указанной страницы? Это может помочь, но я вижу, что некоторые люди не хотят, чтобы это было возможно ...

Эта техника, кажется, работает ( извлечено из нескольких источников, но вдохновлено ссылкой из принятого ответа:

В родительском документе:

<iframe id="MyIFRAME" name="MyIFRAME" 
    src="http://localhost/child.html"
    scrolling="auto" width="100%" frameborder="0">
    no iframes supported...
</iframe>

у ребенка:

<!-- ... -->
<body>
<script type="text/javascript">
    function resizeIframe() {

        var docHeight;
        if (typeof document.height != 'undefined') {
            docHeight = document.height;
        }
        else if (document.compatMode && document.compatMode != 'BackCompat') {
            docHeight = document.documentElement.scrollHeight;
        }
        else if (document.body 
            && typeof document.body.scrollHeight != 'undefined') {
            docHeight = document.body.scrollHeight;
        }

        // magic number: suppress generation of scrollbars...
        docHeight += 20;

        parent.document.getElementById('MyIFRAME').style.height = docHeight + "px";    
    }
    parent.document.getElementById('MyIFRAME').onload = resizeIframe;
    parent.window.onresize = resizeIframe;
</script>               
</body>

Кстати: Это будет работать только в том случае, если родитель и потомок находятся в одном домене из-за ограничений в JavaScript по соображениям безопасности ...

Ответы [ 3 ]

3 голосов
/ 12 сентября 2008

Вы можете использовать язык сценариев для включения страницы в родительскую страницу, в противном случае вы можете попробовать один из следующих методов javascript:

http://brondsema.net/blog/index.php/2007/06/06/100_height_iframe http://www.experts -exchange.com / Web_Development / Web_Languages-стандарты / PHP / Q_22840093.html

2 голосов
/ 12 сентября 2008

При условии, что ваш iframe размещен на том же сервере, что и содержащая страница, вы можете получить к нему доступ через javascript .

Существует ряд предложенных способов для установки iframe на полную высоту содержимого , каждый с различной степенью успеха - Google для этой проблемы показывает, что это довольно распространенный, без Я боюсь, реальное, универсальное, универсальное решение для всех!

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

0 голосов
/ 12 сентября 2008

Я мог бы что-то здесь упустить, но добавление scrolling=no в качестве атрибута к тегу iframe обычно избавляет от полос прокрутки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...