Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2008, 05:01   #1
cwit
 
Аватар для cwit
 
Регистрация: 17.11.2008
Сообщений: 5
Лампочка Изменение высоты фрецма от контента

Задача изменять высоту фрейма под содержимое.

Часть решения:
Код:
<iframe id="myframe" style="border: 1px solid #C0C0C0; " name="I1" src="file.htm" width="99%" height="130"  border="0" frameborder="0"> 
</iframe> 

<script language='JavaScript' type="text/javascript"> 
function clickAction() 
      { 
          var timeout; 
          frameFitting(); 
          var fr = document.getElementById('myframe').contentWindow.document.body.getElementsByTagName('a'); 
          for (var i=0; i<fr.length; i++) 
          { 
              fr[i].onclick = function() 
              { 
                  clearInterval(timeout); 
                  timeout = setInterval("frameFitting()",100); 
              } 
          } 
      } 

      function frameFitting() 
      { 
         document.getElementById('foto_frame').width = '99%'; 
          document.getElementById('foto_frame').height = document.getElementById('myframe').contentWindow.document.body.scrollHeight+4+'px'; 
      } 


         onload = clickAction; 
</script>


Данный код будет работать.
Требуется, чтобы размер изменялся каждый раз, когда происходит перезагрузка фрейма. Данный скрипт делает это 1 раз

Есть варианты решения (но не получилось их реализовать):
либо его зациклить (цикл не получилось создать по вермени)
либо поместить его в фрейм (страницу и при загрузке содержимого фрейма изменять его высоту)
либо воспользоваться CSS

ПОМОГИТЕ, Я НЕ Мого сообразить, а завтра начальника будет пилить...
cwit вне форума Ответить с цитированием
Старый 17.11.2008, 06:21   #2
cwit
 
Аватар для cwit
 
Регистрация: 17.11.2008
Сообщений: 5
По умолчанию

Код:
<iframe id="myframe" style="border: 1px solid #C0C0C0; " name="I1" src="file.htm" width="99%" height="130"  border="0" frameborder="0"> 
</iframe> 

<script language='JavaScript' type="text/javascript"> 
function clickAction() 
      { 
          var timeout; 
          frameFitting(); 
          var fr = document.getElementById('myframe').contentWindow.document.body.getElementsByTagName('a'); 
          for (var i=0; i<fr.length; i++) 
          { 
              fr[i].onclick = function() 
              { 
                  clearInterval(timeout); 
                  timeout = setInterval("frameFitting()",100); 
              } 
          } 
      } 

      function frameFitting() 
      { 
         document.getElementById('myframe').width = '99%'; 
          document.getElementById('myframe').height = document.getElementById('myframe').contentWindow.document.body.scrollHeight+4+'px'; 
      } 



   function size1()
      {
          onload = clickAction;   
          setTimeout("size2()", 1000);
      }

   function size2()
      {
           onload = clickAction;   
           setTimeout("size1()", 1000);
      }
// запускаем цикл
size1();

</script>
почемуто onload = clickAction; можно вызвать 1 раз, если зацикливать то 2,3 и т.д. разы не работает

Последний раз редактировалось cwit; 17.11.2008 в 06:24.
cwit вне форума Ответить с цитированием
Старый 17.11.2008, 10:11   #3
Doda
Пользователь
 
Регистрация: 21.11.2007
Сообщений: 64
По умолчанию

Естественно у тя нифига не работает. Страница загружается, срабатывает онлоад, дальше, несмотря на то, что у тя крутится некий цикл, онлоад не срабатывает, страница уже загружена и больше не перегружается. Обновление содержимого фрейма не вызывает онлоад родителя. тебе надо вызывать функцию изменения clickAction из file.htm
Doda вне форума Ответить с цитированием
Старый 18.11.2008, 16:17   #4
cwit
 
Аватар для cwit
 
Регистрация: 17.11.2008
Сообщений: 5
По умолчанию

Подскажи как можно вызвать функция из фрейма
cwit вне форума Ответить с цитированием
Старый 18.11.2008, 16:17   #5
cwit
 
Аватар для cwit
 
Регистрация: 17.11.2008
Сообщений: 5
По умолчанию

Код:
<script type=\"text/javascript\">
		top.document.clickAction();
</script>
ТАК?
cwit вне форума Ответить с цитированием
Старый 18.11.2008, 18:24   #6
Doda
Пользователь
 
Регистрация: 21.11.2007
Сообщений: 64
По умолчанию

На самом деле эту функцию можно впихнуть во фрейм и немного переделать. Посмотри вложение, думаю суть поймешь.temp.rar

Только крутить бесконечный цикл нерационально (мягко говоря). Достаточно вызывать эту функцию когда у тебя обновляется содержимое фрейма.

Последний раз редактировалось Doda; 18.11.2008 в 18:27.
Doda вне форума Ответить с цитированием
Старый 19.11.2008, 07:25   #7
cwit
 
Аватар для cwit
 
Регистрация: 17.11.2008
Сообщений: 5
По умолчанию

В родительском окне:
Код:
<iframe id="myframe" name="I1" src="file.htm" width="99%" height="160"  border="0" frameborder="0"></iframe>
width="99%" height="160" - значения по умолчанию, если не работает javascript


В фрейм вставляем в конце код:
Код:
	<script type="text/javascript">
		var timeout;
		function clickAction()
		{

		    frameFitting();
		    var fr = parent.document.getElementById('myframe').contentWindow.document.body.getElementsByTagName('a');
		    for (var i=0; i<fr.length; i++)
		    {
 		        fr[i].onclick = function()
		        {
		            clearInterval(timeout);
		            timeout = setInterval("frameFitting()",100);
		        }
		    }
		}

		function frameFitting()
		{
		    parent.document.getElementById('myframe').width = '99%';
		    parent.document.getElementById('myframe').height = parent.document.getElementById('myframe').contentWindow.document.body.scrollHeight+4+'px';

		}


        clickAction();

        // если страница загружает картинки, которые приведут к увелечению высоты, то обновляем высоту 2 раз через 5 сек.
         setTimeout("clickAction()", 5000);
	</script>
ВСЁ!!
и да, админ исправ тему для оптимизации.
Изменение высоты фрейма от контента
cwit вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение формата DRAGGER Фриланс 6 14.10.2008 19:36
изменение разрешения Sanek777 Общие вопросы Delphi 1 11.09.2008 17:43
Менеджер контента Insainer HTML и CSS 1 27.04.2008 11:06
Изменение громкости mutabor Win Api 2 04.08.2007 01:12
Изменение цвета Artem Общие вопросы Delphi 5 12.07.2007 09:07