Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

JavaScript+PHP: Автоматическая смена страниц

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Pattern®



Зарегистрирован: 02.10.2004
Сообщения: 1

СообщениеДобавлено: Сб Окт 02 2004 12:11    Заголовок сообщения: JavaScript+PHP: Автоматическая смена страниц Ответить с цитатой

Есть следующая проблема.
Есть фреймовая страница. В ней содержится 2 фрейма. 2-ой (нижний) фрейм является управляющим для 1-ого фрейма. Во втором находится список страниц для отображения, а так же прописан javascript код, который проверяет, загрузилась ли до конца страница, находящаяся в 1-ом фрейме. Если она загрузилась, то 1-ый фрейм загружает следующую страницу списка, а 2-ой фрейм перегружает сам себя. Если страница в 1-ом фрейме не загрузилась до конца, то функция проверки загрузки страницы перегружается и делает проверку снова.
Вроде бы всё понятно и кажется чего тут делать. Однако после загрузки 2-ой страницы, появляется глюк, что страницы зацикливаются...
Прилагаю "сырцы" Wink Кто знает в чём глюк, ткните мне пальцем, уже сутки над этой проблемой колбашусь, никак не могу решить. Evil or Very Mad
Фреймовая главная страница index.php:
Код:
<html>
<head>
   <title>Title</title>
</head>
<frameset rows="*,30"  framespacing=0 border=0 frameborder=0>
    <frame name='fr_up' src='http://www.anysite.com/1.php' marginwidth=0 marginheight=0 scrolling=auto frameborder=0 noresize>
    <frame name='fr_down' src='http://www.anysite.com/down.php' marginwidth=0 marginheight=0 scrolling=no frameborder=0 noresize>
</frameset>
<body>
</body>
</html>
2-ая (нижняя) страница down.php:
Код:
<?php
   $list_pages[]="'http://www.anysite.com/1.php'";
   $list_pages[]="'http://www.anysite.com/2.php'";
   $list_pages[]="'http://www.anysite.com/3.php'";
   $list_pages[]="'http://www.anysite.com/4.php'";
   $list_pages[]="'http://www.anysite.com/5.php'";
   $list_pages[]="'http://www.anysite.com/6.php'";
   $all++;
   if ($all>5) { $all=0; }
   $url=$list_pages[$all];
?>
<html>
<head>
   <title>Down</title>
   <meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
   <script language="javascript">
   var start;
   var end;
   var cd_;
   var any_url_;

   function CountDown(any_url_) {
      start=-1;
      end=30;
      UpRepeat(any_url_);
   }
   
   function UpRepeat(any_url_){
      start++;
      if(start>end){
         start=-1;
      }     
      if (top.frames['fr_up'].document.readyState=="complete"){
         window.parent.frames['fr_up'].document.location.href=any_url_;
         document.location.reload();
      } else {
         cd_=setTimeout("UpRepeat(any_url_)",1000);
      }
   }
   </script>
</head>

<body onLoad=UpRepeat(<?=$url?>)>
<table width='100%' height=30  border=0 cellpadding=0 cellspacing=0>
<form name=form method=post action='down.php'>
<tr>
   <td><input type=submit name=submit value='Следующая'></td>
   <td>Показано страниц&nbsp;<input type=text name=all value=<?=$all?> class=read_text readonly></td>
</tr>
</form>
</table>
</body>
</html>

[..:ДОБАВЛЕНО:..]

Я разобрался в чём дело. Нужно слегка модифицировать функции в странице down.php:
Код:
<?php
...
   $a_++;
   $all_++;
   if ($a_>14) { $a_=0; }
   $url=$list_pages[$a_].",".$a_.",".$all_;
?>
...
var page_num_;
var page_all_;
var url_next_; //Вместо any_url

function CountDown(url_next_,page_num_,page_all_) {
   start=-1;
   end=30;
   if(UpRepeat()){
      window.parent.frames['fr_up'].document.location.href=url_next_;
      document.location.href='http://www.anysite.com/fr_down.php?a_='+page_num_+'&all_='+page_all_;
   }
}
И в функции UpRepeat()
Код:
...
   if(start>end){
      return false;
   }
   if (top.frames['fr_up'].document.readyState=="complete"){
      return true;
   } else {
      ur_=setTimeout("UpRepeat()",1000);
   }
...
Теперь получается, что если нажать на кнопку в down.php, следующая страница загрузится в 1-ом фрейме как полагается, если ещё не загрузилась текущая. CountDown вызывает UpRepeat(), которая будет выполняться, пока либо не загрузится страница, либо пока не превысится время выполнения, т.е. end=30 (секунд). Правда по окончании времени больше ничего не будет происходить, но это уже совсем другой вопрос. Laughing
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...