БлогNot. Как динамически изменить размер окна iframe по содержимому

Как динамически изменить размер окна iframe по содержимому

Через тег <iframe> зачастую легче всего подключить на сайт внешнее содержимое, например, с другого сайта. При этом не нужно знать ни PHP, ни Ajax. Проблема возникает разве что с описанным в заголовке статьи моментом - не всегда получается подобрать "красивый" размер фрейма "вручную". Нельзя ли поручить эту работу самому браузеру?

Вот мне сегодня предложили такое "решение". В теге <head> документа пишем:

<script type="text/javascript">
<!--
function mySize(){
document.getElementById('myIframe').style.posHeight=
 myIframe.document.body.scrollHeight;
document.getElementById('myIframe').style.posWidth=
 myIframe.document.body.scrollWidth;
}
//-->
</script>

В нужном месте ставим тег <iframe> c атрибутом id, указанным в скрипте (в нашем случае - myIframe):

<iframe src="URL_НУЖНОГО_ФАЙЛА" 
 id="myIframe" scrolling="no" frameborder="0">
</iframe>

Говорим, что размер фрейма нужно обновлять по загрузке документа:

<body onLoad="mySize();">

Увы, разные браузеры могут отформатировать содержимое фрейма по-разному. И на безопасность могут заругаться, не дав изменить ширину и высоту (исключение - если оба документа находятся в одном домене). И почему вы решили, что отдельное окно - iframe, "автоматически" сообщит о своей загрузке главному документу? Тогда уж ставить какой-нибудь флаг в окне-родителе и проверять его через таймер...

Ну и последнее слабое место решения - включённый Javascript :) Если уж его включать, то как-то так, по современному надо :)

 Статья на Хабре по теме

09.11.2012, 13:56 [16971 просмотр]


теги: javascript html ошибка вебдезигн

К этой статье пока нет комментариев, Ваш будет первым