Как вывести сообщение "Ждите, идет загрузка..."

tail

Guest
Как вывести сообщение "Ждите, идет загрузка..."

Есть вот такое

?>
<html>
<head>
<script LANGUAGE='JavaScript'>
document.body.style.cursor=url('new.cur');
</script>
</head>
<body onload='document.body.style.cursor=auto'">
<?php
// Грузится около 10 секунд
read_client();
?>
</body>
</html>

как вывести сообщение для клиента об ожидании загрузки
пробую поменять курсор, но он срабатывает после окончания работы функции
 

MiRacLe

просто Чудо
сделай <DIV id="preloader" style="position:absolute;z-index:100;width:100%;height:100%;left:0px;top:0px;">
в нём напиши о том что загрузка шла, идёт и будет идти до скончания электричества </div>
а в <body onload="document.getElementById('preloader').style.display='none'">;
 

tail

Guest
Originally posted by MiRacLe
сделай <DIV id="preloader" style="position:absolute;z-index:100;width:100%;height:100%;left:0px;top:0px;">
в нём напиши о том что загрузка шла, идёт и будет идти до скончания электричества </div>
а в <body onload="document.getElementById('preloader').style.display='none'">;
Так не работает, так как боди еще не загружен, поэтому див не кажет.
 

MiRacLe

просто Чудо
не работает рабочий

PHP:
<html>
<body onload="document.getElementById('preloader').style.display='none'">
<DIV id="preloader" style="position:absolute;z-index:100;width:100%;height:100%;left:0px;top:0px;background-color:white;text-align:center;">
	в нём напиши о том что загрузка шла, идёт и будет идти до скончания электричества 
</div>

тут твой текст

<body>
</html>
осторожно почти 2мб (как пример)
 

tail

Guest
Originally posted by MiRacLe
не работает рабочий

PHP:
<html>
<body onload="document.getElementById('preloader').style.display='none'">
<DIV id="preloader" style="position:absolute;z-index:100;width:100%;height:100%;left:0px;top:0px;background-color:white;text-align:center;">
	в нём напиши о том что загрузка шла, идёт и будет идти до скончания электричества 
</div>

тут твой текст

<body>
</html>
осторожно почти 2мб (как пример)
Я так и делаю, вот гляди, тут правильнее

<html>
<body onload="document.getElementById('preloader').style.display='none'">
<DIV id="preloader" style="position:absolute;z-index:100;width:100%;height:100%;left:0px;top:0px;background-color:white;text-align:center;">
в нём напиши о том что загрузка шла, идёт и будет идти до скончания электричества
</div>
<?php
// Грузится около 10 секунд
$a=0;
for($i=0;$i<10000000;$i++)
{
$a++;
}
?>
</body>
</html>
 

MiRacLe

просто Чудо
тут не "правильно" ты в браузер в своём цикле не выводишь ничего

напиши после $a++; echo ' '; или if ($i % 10000 == 0) echo ' '; //для экономии так сказать трафика

p.s. буферизация вывода по умолчанию в php.ini включена
 

tail

Guest
Так я ничего пока и не вывожу, там функция читает дофига всего(готовит данные) в среднем 10 сек а потом уже вывожу.
 

MiRacLe

просто Чудо
tail
Update: перед свои мегациклом вставь [m]flush[/m]();

Mozilla показывает сразу , а IE до n-цатого байта не хочет(почему - можно найти в поиске)
 

tail

Guest
Все равно не работает, и с flush() тоже. Нашел якобы для эксплорера надо перед flush() послать 256 байт echo str_repeat(" ", 256);
но не помогает.кстати FireFox реагирует аналогично.

Может есть еще какие решения, например в новом окне, а потом его закрывать?

-~{}~ 15.02.05 19:21:

Вот так для эксплорера работает

echo '<html';
echo '<body onload="document.getElementById('preloader').style.display='none'">';
echo '<DIV id=preloader';
echo 'Ждите идет загрузка...';
echo '</div>';
flush();
echo str_repeat(" ", 256);
flush();
read_client($a_auth);
?>
</body>
</html>

именно так после echo

flush();
echo str_repeat(" ", 256);
flush();

, по другому не получилось:confused:
 
Сверху