Консультация № 66744
13.12.2006, 02:02
0.00 руб.
0 2 1
Для генерировании php страницы на сервере иногда требуется много времени.
Чтобы пользователь дождался полного ответа на страницу вставил следующий код:
<pre>
<div id="please_wait" style="display:none; width:100%; position:relative; top:0px; left:0px; z-index:2"><b>Please wait...</b></div>
<script language="JavaScript" type="text/javascript">
document.getElementById(‘please_wait‘).style.display=‘‘;
</script>
<?php flush(); ?>
</pre>

А в конце страницы отключаю блок <b>please_wait</b>
<pre><script language="JavaScript" type="text/javascript">
document.getElementById(‘please_wait‘).style.display=‘none‘;
</script>
</pre>
В Firefox и Opera - срабатывает, а в IE - нет. Буду благодарен, если подскажите универсальный вариант.

Обсуждение

Неизвестный
13.12.2006, 08:58
общий
попробуйте вариант с onLoad && onUnload - события на полную загрузку и закрытие страницы соотв. _body onLoad="javascript:alert(‘Loaded it!‘);"_
Неизвестный
13.12.2006, 09:05
общий
это ответ
Здравствуйте, Kruphi!
Дело в том, что для браузеров, чтобы начать показывать страницу, нужно передать определенное количество информации (байт).
Попробуйте написать так:
<?php
echo str_pad(‘‘,4096)."\n";
flush();
?>

В приложении рабочий код ProgressBar. Показывает процент загрузки и т.п.
Источник:
http://www.php.net/flush
у меня все время делается перессылка на ru.php.net и сервер не отвечает, поэтому вот альтернативная ссылка:
http://www.google.com/search?q=cache:9x6bKzCYWdIJ:www.php.net/flush&hl=ru&ct=clnk&cd=1
Читайте комментарии, там много подобных примеров.

Удачи!

Приложение:
<html><head><style type="text/css"><!--div { margin: 1px; height: 20px; padding: 1px; border: 1px solid #000; width: 275px; background: #fff; color: #000; float: left; clear: right; top: 38px; z-index: 9}.percents { background: #FFF; border: 1px solid #CCC; margin: 1px; height: 20px; position:absolute; width:275px; z-index:10; left: 10px; top: 38px; text-align: center;}.blocks { background: #EEE; border: 1px solid #CCC; margin: 1px; height: 20px; width: 10px; position: absolute; z-index:11; left: 12px; top: 38px; filter: alpha(opacity=50); -moz-opacity: 0.5; opacity: 0.5; -khtml-opacity: .5}--></style></head><body><?phpif (ob_get_level() == 0) { ob_start();}echo str_pad(‘Loading... ‘,4096)."
\n";for ($i = 0; $i < 25; $i++) { $d = $d + 11; $m=$d+10; //This div will show loading percents echo ‘<div class="percents">‘ . $i*4 . ‘% complete</div>‘; //This div will show progress bar echo ‘<div class="blocks" style="left: ‘.$d.‘px"> </div>‘; flush(); ob_flush(); sleep(1);}ob_end_flush();?><div class="percents" style="z-index:12">Done.</div></body></html>
Форма ответа