динамическая высота iframe в зависимости от содержимого PHP? - PullRequest
1 голос
/ 29 ноября 2009

Как я могу установить высоту своего Iframe, чтобы быть динамическим к его содержанию.

Содержимое - только PHP-код, ничего больше.

Я использую php для запроса базы данных, а затем показываю некоторые объявления. Чем больше объявлений, тем выше должен быть iframe.

Я думал, что высота = '100%' должна это сделать, но нет ...

Я читал другие вопросы, но их решения для меня не работают.

Предложения?

Спасибо

Ответы [ 2 ]

1 голос
/ 29 ноября 2009

Вы должны установить высоту iframe в javascript. JavaScript должен быть на странице внутри iframe (должен быть, если страница с iframe и страница в iframe принадлежат разным доменам).

a.html:

<iframe src="b.html" id="myiframe"></iframe>

b.html:

<div style="height: 500px; background:magenta;"></div>
<script>
    parent.document.getElementById('myiframe').style.height = document.body.offsetHeight+'px';
</script>
0 голосов
/ 29 ноября 2009

Если объявления только текстовые, вы можете использовать line height * number of lines в качестве высоты. Я предполагаю, что вы знаете размер шрифта, а количество строк можно узнать, посчитав <br /> s:

<?php
// $content is your ads
// assuming ads.php returns an ad with an id, this example uses ad #10
// We are reading it with a full url because we don't want to read it as just
// a text file (we want it to be interpreted by php before we load it)
$content = file_get_contents('http://www.example.com/ads.php?id=10');
$line_height = 12; // line-height: 12px; is set in CSS
$number_of_lines = substr_count($content,'<br />'); // you can search for <br>
                                                    // and <br/> as well if you 
                                                    // need to
$height = $line_height * $number_of_lines; // You may also want to have padding

?>
<iframe src="ads.php?id=10" height="<?php echo $height; ?>" />

РЕДАКТИРОВАТЬ: изменил $ font_size на $ line_height

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