Список форумов Шадринский форум -> Программирование -> PHP, PERL, HTML, CSS etc -> Javascript (индикатор загрузки)
Начать новую тему   Ответить на тему   вывод темы на печать

Javascript (индикатор загрузки)

Автор
Сообщение
Brain
Писатель


Пол: Пол:Муж.
Зарегистрирован: 01.12.2004
Сообщения: 357


Статус: Offline
СообщениеДобавлено: 2005.11.15 14:51.27
Ответить с цитатой
Привет Программеры WEB(a)!!!!..
у меня небольшая проблема, которая убила целый день и не разрешилась Sad...
Цель: написать индикатор загрузки
Язык: javascript

а вот подробное обьяснение как начал:

написал функцию
обьявил 3 переменных(ышо помню как это делается Smile)
присвоил им сие сроковое значение
оформление индикатора пусчай будет таблицей
// начало таблицы
a = '<TABLE BORDER="0" WIDTH="120" CELLSPACING="1" CELLPADDING="0" BGCOLOR="#808080"><TR><TD><TABLE WIDTH="100%" HEIGHT="100%" BORDER="0" CELLSPACING="1" CELLPADDING="3" BGCOLOR="#C0C0C0" style = "FONT-SIZE:1px;"><TR>';
// средина (ячейки которые должны КРАСИТЬСЯ каким нибудь цветом )
// количество покрашенных ячеек зависит от времени
// предположим что ячеек должно быть 20
b='<TD BGCOLOR="#808080" ALIGN="CENTER" VALIGN="TOP" >&nbsp;</TD>';

// ну и собственно конечные теги таблицы
c='</TR></TABLE></TD></TR></TABLE>';

// осталось все это дело реализовать (собственно за этим тему и открыл) непАлУчАетЬся чЕтА Sad

может вы что подскажете...
кста... нашел скрипт в инете, посмотрел и подумал ну его нах..
все можно сделать гораздо прощще Smile



Заранее благодарен за помощь...
Посмотреть профиль Отправить личное сообщение
xdsl
просто хороший человек


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1252
Откуда: shadrinsk

Статус: Offline
СообщениеДобавлено: 2005.11.15 20:21.36
Ответить с цитатой
Есть более удобный вариант. Рисунок - вертикальная полоска в 1 пихель толщиной. По таймеру ширина рисунка увеличивается на dx. Реализация - см. справочник по клиентскому JS, методы window.setInterval, window.clearInterval или window.setTimeout, window.clearTimeout
Посмотреть профиль Отправить личное сообщение
char
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1304


Статус: Offline
СообщениеДобавлено: 2005.11.15 20:30.35
Ответить с цитатой
а если графика отключена? Wink
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2005.11.15 20:57.51
Ответить с цитатой
и JS Wink
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Brain
Писатель


Пол: Пол:Муж.
Зарегистрирован: 01.12.2004
Сообщения: 357


Статус: Offline
СообщениеДобавлено: 2005.11.15 20:59.38
Ответить с цитатой
xdsl писал(а):
Есть более удобный вариант. Рисунок - вертикальная полоска в 1 пихель толщиной. По таймеру ширина рисунка увеличивается на dx. Реализация - см. справочник по клиентскому JS, методы window.setInterval, window.clearInterval или window.setTimeout, window.clearTimeout



Честно, была такая идея... но, суть другой заключаеться на максимум уменьшить нагрузку на сервер, следовательно снизить количество потребления трафика..
и еще хотелось бы оформить все это дело с минимальным процентом графики.

Как гриться...
и нас не напрягает....
и люди с выключиной мультимедией что то поймут Smile
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2005.11.15 21:01.27
Ответить с цитатой
нагрузки на сервер в таком случАе нет. отключенная графика? я только одного видел такого..

кстати. индикатор загрузки чего пишем?
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Konst
Писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 682


Статус: Offline
СообщениеДобавлено: 2005.11.15 21:05.29
Ответить с цитатой
andy ice писал(а):
кстати. индикатор загрузки чего пишем?

В данном случае, наверное, загрузки страницы
Посмотреть профиль Отправить личное сообщение
Brain
Писатель


Пол: Пол:Муж.
Зарегистрирован: 01.12.2004
Сообщения: 357


Статус: Offline
СообщениеДобавлено: 2005.11.15 21:08.10
Ответить с цитатой
andy ice писал(а):
и JS Wink

допустим JS отключить не лзя.. т.к. проверяеться header на браузер, информацию смогут получить только те клиенты, которые используют IE 6 и выше.


Есть какие нибудь идеи решения данной проблемы не используя графики?
Посмотреть профиль Отправить личное сообщение
Brain
Писатель


Пол: Пол:Муж.
Зарегистрирован: 01.12.2004
Сообщения: 357


Статус: Offline
СообщениеДобавлено: 2005.11.15 21:15.52
Ответить с цитатой
[quote="Brain"]
andy ice писал(а):
нагрузки на сервер в таком случАе нет. отключенная графика? я только одного видел такого..

кстати. индикатор загрузки чего пишем?


Индикатор возможного обнавления страницы, клиент сможет обновить страницу тогда, когда идикатор покажет все закрашенные ячейки.
Только визуально.
Безопасность - чур на php Wink
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2005.11.15 21:17.54
Ответить с цитатой
о. понятно. типа рапидшары. где сцылка показывается через N секунд. а тут рефреш через N секунд. IMHO, нельзя запретить такое действо
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Konst
Писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 682


Статус: Offline
СообщениеДобавлено: 2005.11.15 21:24.36
Ответить с цитатой
Вобщем вот что я сваял:
<script language="javascript">
var pColor = '#0a246a';
var pBars = 20;
var pDiv = document.createElement("div");
pDiv.style.position = 'absolute';
pDiv.style.width = 'auto';
pDiv.style.height = 'auto';
pDiv.style.padding = '5px';
pDiv.style.backgroundColor = '#d4d0c8';
pDiv.style.borderWidth = '2px';
pDiv.style.borderStyle = 'outset';
pDiv.style.zIndex = '1';
pDiv.onselectstart = function() { return false; }

var pTable = document.createElement("table");
pTable.id = 'pBar';
pTable.cellSpacing = '1';
pTable.cellPadding = '0';
pTable.style.borderWidth = '1px';
pTable.style.borderStyle = 'inset';
pTable.style.cursor = 'default';

var tRow = pTable.insertRow(0);
for(var n=1;n<=pBars;n++)
{
   var tCell = tRow.insertCell(tRow.cells.length);
   tCell.width = '7';
   tCell.height = '15';
}

pDiv.appendChild(pTable);

pDiv = document.body.appendChild(pDiv);
pDiv.style.top = Math.round(document.body.clientHeight/2-pTable.offsetHeight/2)+'px';
pDiv.style.left = Math.round(document.body.clientWidth/2-pTable.offsetWidth/2)+'px';;

function progress()
{
   var pBar = document.getElementById('pBar');
   if(pBar)
   {
      for(var n=0; n<pBar.rows[0].cells.length; n++)
      {
         if(pBar.rows[0].cells[n].bgColor!=pColor)
         {
            pBar.rows[0].cells[n].bgColor = pColor;
            break;
         }
      }
   }
}
</script>
Для отображения прогресса в баре нам нужно вызвать ф-ю progress() в определённых местах страницы (сами уж определите, с какими целями будуте использовать) определённое кол-во раз. В данном случае 20 вызовов. Кол-во задано в переменной pBars. Если нужно, чтобы бар исчезал - после последнего вызова делаем так: pDiv.removeNode(true).

Работает в IE, FF и Опере (кому-нибудь надо больше? ).

Попытался сделать бар схожий с виндовсовсим
Пользуйте.
С Brain'а пЫво.
Посмотреть профиль Отправить личное сообщение
Konst
Писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 682


Статус: Offline
СообщениеДобавлено: 2005.11.15 21:55.15
Ответить с цитатой
А вот пример работы: http://m.shadrinsk.net:81/
Скорость исходящего трафика насильно ограничена до 28.8Kbps (как на стареньком модеме Smile).
Посмотреть профиль Отправить личное сообщение
Brain
Писатель


Пол: Пол:Муж.
Зарегистрирован: 01.12.2004
Сообщения: 357


Статус: Offline
СообщениеДобавлено: 2005.11.15 22:32.02
Ответить с цитатой
andy ice писал(а):
о. понятно. типа рапидшары. где сцылка показывается через N секунд. а тут рефреш через N секунд. IMHO, нельзя запретить такое действо


Действие рефреш - нельзя., но можно не выводить информациюю.
Выдать 0 байт информации, или фразу типа "Ждите обновления" клиенту.
Собстно так и планируеться Smile
Посмотреть профиль Отправить личное сообщение
char
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1304


Статус: Offline
СообщениеДобавлено: 2005.11.15 22:39.06
Ответить с цитатой
ммм, а вот интересно, если js такой динамический, то наверно можно сделать рамку из таблицы, и чтоб по краю рамки ячейка залитая бегала? Wink
Посмотреть профиль Отправить личное сообщение
Brain
Писатель


Пол: Пол:Муж.
Зарегистрирован: 01.12.2004
Сообщения: 357


Статус: Offline
СообщениеДобавлено: 2005.11.15 22:45.30
Ответить с цитатой
Konst писал(а):
А вот пример работы: http://m.shadrinsk.net:81/
Скорость исходящего трафика насильно ограничена до 28.8Kbps (как на стареньком модеме Smile).

Во!.. отличное решение.. респект!!
Посмотреть профиль Отправить личное сообщение
xdsl
просто хороший человек


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1252
Откуда: shadrinsk

Статус: Offline
СообщениеДобавлено: 2005.11.15 22:46.29
Ответить с цитатой
Просто интересно, процесс, который отслеживается, на сервере происходит?
Если да, то не понимаю как, не общаясь периодически или постоянно с сервером, можно на клиенте узнать, что процесс завершен на 20%, 50%, 100% ... - все, разрешено обновлять страницу?
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2005.11.15 22:48.57
Ответить с цитатой
видимо по времени
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Brain
Писатель


Пол: Пол:Муж.
Зарегистрирован: 01.12.2004
Сообщения: 357


Статус: Offline
СообщениеДобавлено: 2005.11.15 23:37.59
Ответить с цитатой
все верно..
после рефреша заносим время в БД...
далее одно простое уловие..
если на данный момент время больше времени после рефреша + время через которое можно рефрешиться - рефрешим Smile
иначе блокируем информацию...
а данный скрипт лишь для визуализации..
(ну эт дело индивидуальное)
Посмотреть профиль Отправить личное сообщение
xdsl
просто хороший человек


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1252
Откуда: shadrinsk

Статус: Offline
СообщениеДобавлено: 2005.11.16 10:21.12
Ответить с цитатой
Понятно. К сожалению, ненадежно. Источник трудноуловимых ошибок в будущем, имхо.
Посмотреть профиль Отправить личное сообщение
Brain
Писатель


Пол: Пол:Муж.
Зарегистрирован: 01.12.2004
Сообщения: 357


Статус: Offline
СообщениеДобавлено: 2005.11.16 13:24.42
Ответить с цитатой
xdsl писал(а):
Понятно. К сожалению, ненадежно. Источник трудноуловимых ошибок в будущем, имхо.



Можно пАподробней, нехотелось бы допускать подобные ошибки
Посмотреть профиль Отправить личное сообщение
xdsl
просто хороший человек


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1252
Откуда: shadrinsk

Статус: Offline
СообщениеДобавлено: 2005.11.16 22:48.13
Ответить с цитатой
Заранее невозможно сказать, сколько времени будет выполняться та или иная операция на сервере. Во время ее выполнения может, например, подключится еще несколько клиентов, запуститься задача по расписанию, да вообщем много чего может случиться, от вас не зависящего. Причем это не форсмажор, а совершенно стандартные ситуации.
Посмотреть профиль Отправить личное сообщение
Egor
Освоившийся


Пол: Пол:Муж.
Зарегистрирован: 04.04.2006
Сообщения: 37


Статус: Offline
СообщениеДобавлено: 2007.01.26 04:08.31
Ответить с цитатой
Brain
ну и задачку для размышления подкинул, сам захотел такого. Но просто по времени нереально...
Посмотреть профиль Отправить личное сообщение
Brain
Писатель


Пол: Пол:Муж.
Зарегистрирован: 01.12.2004
Сообщения: 357


Статус: Offline
СообщениеДобавлено: 2007.05.12 15:18.04
Ответить с цитатой
Вот самописный индикатор, php + JS (оптимизация под все браузеры с включеным JS)

---------

http://cns.shadrinsk.net/ind.rar
Посмотреть профиль Отправить личное сообщение
Страница 1 из 1
Начать новую тему   Ответить на тему   вывод темы на печать
Показать сообщения:   
Список форумов Шадринский форум -> Программирование -> PHP, PERL, HTML, CSS etc -> Javascript (индикатор загрузки)

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