@fuckingawesomenigga

Как сделать высоту iframe динамичной?

Использую следующую конструкцию, перепробовал всё что мог найти, не работает.

<a data-toggle="modal" data-target="#editModal" class="openpop" href="/card1.html">
<a data-toggle="modal" data-target="#editModal" class="openpop" href="/card2.html">
<a data-toggle="modal" data-target="#editModal" class="openpop" href="/card3.html">

<div class='modal fade' id='editModal' tabindex='-1' role='dialog' aria-labelledby='editModalLabel' aria-hidden='true'>
	<div class='modal-dialog' role='document'>
		<div class='modal-content'>
			<iframe src="" width="100%" align="center" frameborder="0" marginheight="0" marginwidth="0"></iframe>
		</div>
	</div>
</div>


$(document).ready(function () {
	$('.openpop').click(function (e) {
		e.preventDefault();
		$('iframe').attr('src', $(this).attr('href'));
		$('.modal-content').fadeIn('slow');
	});
});
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
@olenkill2
Переверстальщик-недофронтендер
Внутри iframe вызываешь метод
parent.postMessage({height: document.body.scrollHeight}, '*');

Он отправляет родителю высоту

Внутри родителя пишешь вот такой код
// прослушиваем все сообщения из iframe-ов
window.addEventListener("message", function(event)
	{
		var frames = document.getElementsByClassName('iframe');

		// задаем высоту iframe из источников
		for (var i = 0; i < frames.length; i++)
		{
			// если iframe не соответствует источнику, то пропускаем
			if (frames[i].contentWindow !== event.source)
				continue;

			if(typeof event.data.height != 'undefined')
			{
				// задаем высоту нужному iframe
                               $(frames[i]).css({'height':  event.data.height + 20 + 'px'});
			}
		}
}


Могут быть нюансы с CORS
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы