Давайте повеселимся с изменением размера iframe изнутри iframe!
Так что у меня есть HTML-страница, которая имеет некоторый код, который изменяет размер iframe при загрузке. Javascript находится в головной части, и это выглядит так:
<script type="text/javascript">
<!--
function resizeIframe(id){
/*
this.obj=obj
//this.obj.width=null
//this.obj.width=window.frames["sizeframe"].document.body.scrollWidth
this.obj.style.height="" // for Firefox and Opera
setTimeout("this.obj.style.height=this.obj.contentWindow.document.body.scrollHeight+(notIE?heightOffset:0)",10) // setTimeout required for Opera
*/
el=document.getElementById(id)
el.style.height="350px" // for Firefox and Opera
setTimeout("el.style.height=el.contentWindow.document.body.scrollHeight+'px'",1) // setTimeout required for Opera
}
// -->
</script>
+++ И код для iframe выглядит так:
<iframe name="sizeframe" src="thoughtsinitialview.php" marginwidth="1" marginheight="1" width="596" align="middle" border="0" frameborder="0" onload="resizeIframe(this.id)" id="sizeframe" allowTransparency="true" scrolling="no">
+++ Код внутри iframe — это весь php, и внутри этого php-кода есть функция, которая изменяет размер текстовой области (формы). Этот код выглядит так:
print "<script type='text/javascript'>
function AutoGrowTextArea(textField){
if(textField.clientHeight<textField.scrollHeight){
textField.style.height = textField.scrollHeight + 'px';
if(textField.clientHeight < textField.scrollHeight){
textField.style.height = (textField.scrollHeight * 2 - textField.clientHeight) + 'px';
}
}
}
</script>";
+++ Итак, этот фрагмент javascript вызывается следующей функцией в текстовой области:
<textarea name='reply' id='reply' rows='1' style=width: 350' onKeyUp='AutoGrowTextArea(this)'>Write a comment...</textarea>
+++ Итак … в обработчике события onKeyUp, когда пользователь добавляет комментарии, которые превышают 1 строку, текстовая область изменяет размер! Yay: веселые времена! НО — iframe съедает остальную часть отображаемого содержимого, которое показывалось при загрузке iframe. Аааа, облом человек! 🙁
+++ Поэтому я добавил следующий код в конец onKeyUp, это выглядит так:
parent.resizeIframe(id)
+++ Но это не сработало. Я пробовал каждую комбинацию, которую только мог придумать, но я не такой умный, как мастера в этом вопросе о StackOverflow …
Как? Делать? Я? сделать изменение размера iframe, когда textarea изменяет размер с пользовательского ввода?
Заранее большое спасибо и много кармических благословений! (Это для сайта: sitempty.org)
Задача ещё не решена.
Других решений пока нет …