Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Загрузка php


Автор: Annuta 9.10.2007, 20:06
Привет, у меня такая проблема, у меня есть пхп скрипт, который оочень долго формирует стр, т.к. много инфы грузит из БД.
Это проходит очень не красиво... Подскажите можно ли JavaScript написать скрипт, который бы выдавал на весь экран стр на белом фоне ЗАГРУЗКА...  а под ней пока грузился мой пхп ??? Помогите примером пожаста  smile .. спасибо.


Автор: cruelangel 9.10.2007, 20:10
какого рода инфа? почему бы не разбить её на страницы?

Автор: Annuta 9.10.2007, 20:18
на части не получится... там грузится стр с таблицами, которая отображает состояние БД. Да ко всему прочему таких таблиц три... они расположены на разных слоях, на одной стр.  Как же я это всё на части разобью ?

Автор: webevt 9.10.2007, 20:22
Вот окошко. Его поместить где-то в начале документа.
Код

TABLE.loadbar {
 font-size: 11px;
 font-weight: normal;
 font-family: Verdana;
 color: gray;

 background-color: #ffffe9;
 border: 1px #f5f5c7 solid;
 width: 40%;
 height: 100px;
 margin: 3px 3px 3px 3px;

 position: absolute;
 top: 200px;
 left: 300px;

 display: none;
}
.loadbar {
 font-size: 11px;
 font-weight: normal;
 font-family: Verdana;
 color: gray;
}
.loadbarheader {
 font-size: 11px;
 font-weight: bold;
 font-family: Verdana;
 color: gray;
 height: 23px;
 background-color: #f5f5c7;
}


Код

<table id='loadbar_table' align='center' cellspacing='0px' cellpadding='3px' class='loadbar' >
<TR>
<TD align='center' class='loadbarheader' >
Загрузка
</TD>
</TR>
<TR>
<TD id='loadbar' align='center' class='loadbar' >
Пожалуйста, подождите...
</TD>
</TR>
</table>


Вот JS-функция, отвечающая за показ "окошка":
Код

// LoadBar ( id_объекта, статус )
// 1 - показывается || 2 - скрыто
function LoadBar ( Id, State )
{
  var Obj = document.getElementById ( Id );
  if ( State == 1 )
    Obj.style.display = 'block';

  if ( State == 0 )
    Obj.style.display = 'none';
}

В теге <BODY> в onLoad написать эту функцию.

Автор: Annuta 9.10.2007, 20:55
webevt, спасибо за скрипт, я пытаюсь реализовать ваш пример так
Код

<body onload="LoadBar("loadbar_table",1);">
<table id='loadbar_table' align='center' cellspacing='0px' cellpadding='3px' class='loadbar' >
<TR>
<TD bgcolor=#EDEDED align='center' class='loadbarheader' >
Загрузка
</TD>
</TR>
<TR>
<TD bgcolor=#FEFEFEF id='loadbar' align='center' class='loadbar' >
Пожалуйста, подождите...
</TD>
</TR>
</table>         
</body>
</html>

и не вижу ничего... вообще...  просто белый лист. я так понимаю что это display: none; тому виной...
и я не очень понимаю, как мне это приделать к моему случаю  ? Ведь мне надо будет через 5 сек напрмер переключиться с одного ид на другой ? как ??? я правильно понимаю вашу мысль ?

Автор: cruelangel 9.10.2007, 21:08
> там грузится стр с таблицами, которая отображает состояние БД

у БД так много состояний? 0_0


> таблиц три... они расположены на разных слоях

почему бы их не разнести по трём страницам?

Автор: Annuta 9.10.2007, 21:25
...вся идея состоит в том, что при преключении между слоями не нужна дополнительная загрузка данных, а между стрницами нужна.
...вопро.. а сложно организовать такую вещь с учётом примера который подсказал webevt
сделать тамер на 10 с... что бы он 10 сек показывал слой 1 а потом переключался на слой 2./который за 10 с загрузится/. ??????

Автор: dsCode 9.10.2007, 22:23
Была похожая тема. webevt, onLoad наступит, когда вся страница загрузится, так что нет смысла показывать там див загрузки. Можно сделать в head'e document.write('невидимый_див_контейнер'), так же document.write('див_загрузки') а в onLoad уже спрятать загрузку и показать контейнер.

Автор: webevt 23.10.2007, 21:57
Цитата(dsCode @  9.10.2007,  22:23 Найти цитируемый пост)
onLoad наступит, когда вся страница загрузится

Правильно. Когда онлоад наступит, то див уже спрячется. А до этого момента будет виден.
Цитата(Annuta @  9.10.2007,  20:55 Найти цитируемый пост)
я так понимаю что это display: none; тому виной...

Точно ;) Просто из своего скрипта взял, забыл убрать. Это окошечко у мну работает как индикатор аяксовских обращений) Но и в вашем варианте будет работать smile

Автор: sergejzr 23.10.2007, 22:10


Эту строку из твоего кода:
Код

<body onload="LoadBar("loadbar_table",1);">


следует писать так:
Код

<body onload="LoadBar('loadbar_table',1);">


А вообще, в Firefox есть такая классная тульза - Консоль ошибок. Много дискуссий может сэкономить smile

Автор: NNaarreekk 28.10.2007, 01:45
Зайди http://a3n.am, если чтото вроде этого нужно в сорсе посмотри.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)