-
Знаю, конференция "Прочее", может, кто подскажет. Как на гугль-мэйле сделан "прогрессбар" загрузки? Это слой с классом lpt, который меняет width, и лежит внутри другого слоя. Но код изменения width я не нашел. И как это делается столь точно до конца загрузки?
-
через AJAX рендерится
-
А можно чуть поподробнее? ;-)
-
-
-
Мне не нужны уроки AJAX. Мне нужно понять, как реализована эта фишка. С аяксом я знаком.
-
> Мне нужно понять, как реализована эта фишка
ну так в коде должен быть JavaScript меняющий ширину DIV или чего то там. Чудес не бывает, плохо искал значит.
-
> С аяксом я знаком.
> И как это делается столь точно до конца загрузки?
Значит этот вопрос отпадает.
-
> Чудес не бывает, плохо искал значит.
поищи сам на досуге. Найдены переменные lp и pr, но далее раскрутить не могу, даже Firebug'ом
> Значит этот вопрос отпадает.
отнюдь, поясни.
-
> js jin (11.12.08 00:02) [8]
> отнюдь, поясни.
У меня нет гугл мейла, если расскажешь что отображает прогресс может скажу как сделано.
-
При загрузке страницы, то есть еще до всех менюшек, рюшечек етц просто отображается див (как - писал выше) и меняет свою ширину (т.к. он внутри другого дива и имеет синий бэкграунд, то это подобно прогрессбару).
-
Параллельно прорабатываю вопрос на одной известной анонимной имиджборде в /s/ , НО покуда не получил вразумительных ответов. Только на хабре встретилась статья, из всего - наиболее удачная.
-
о таких вещас нужно спрашиваться на специализированных форумах - web. например на php.ru, а не в какой то потрепаловке
-
> js jin
Я посмотрел код страницы. Этот прогресс что ли? <div id="loading"> <div class="cmsg"> <div class="msg"> Загрузка dvmuratov@gmail.com… </div> <div class="lpb"> <div id="lpt"></div> </div> </div> Более невразумительного кода JavаScript я еще не видел. Срабатывает очевидно тот код JavaScript, что в <body> в нем куча ссылок на внешние скрипты. Код явно не для просмотра человеком генерился.
-
> js jin
Но разобраться можно. Но не сейчас. Честно говоря, проще будет придумать свое решение, чем ковырять этот код, который как через обсфукатор пропущенный.
-
Да, место прогресса ты нашел верно, а именно <div class="lpb"> <div id="lpt"></div> </div> lpt и меняет ширину. Где это делается - бог весть.
-
> как через обсфукатор пропущенный.
так оно и есть.
-
> js jin
В кратце суть такова:
Ну изменение ширины DIV на JavaScript сделать не сложно. Страница грузится явно через Ajax в фоне, при этом через тот же Ajax получается информация о проценте выполнения, что отображается на индикаторе. После достижения 100% в окно браузера подставляется загруженная страница. Т.е. изначальная страница содержит только код индикатора и код для загрузки полной версии. Как то так.
Завтра может попробую изобразить подобное.
-
Я понял это точно так же, как ты. А вот хочу найти момент ПОЛУЧЕНИЯ информации о проценте загрузки.
-
-
Хм, интересно...
-
а посмотрел бы на яваскрип фреймворк ссылку на который я дал, то возможно было бы не только интересно но и уже понятно...
не думаю что гугл использует именно его (есть и другие вроде прототайпа, ...), у гугла скорее что то своё, но для понимания нужен же не конкретный код а принцип...
во всяком случае на приведённом фреймворке написать динамическую загрузку довольно просто, добавить прогресс тоже. библиотека событийная, начинает работать до загрузки всей страницы, по готовности DOM, дальше даже если первоначально страничка была урезанным шаблоном, её легко достраивать/докачивать динамически. а при динамической закачке узнать процент выполнения, это даже не вопрос, ты же фактически сам её закачиваешь (контролируешь)... и потому сам знаешь что вот этот модуль/часть занимает треть общего объема значит по завершении прогрессу ставится 30%. ну примерно так.
|