Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.01.2013, 14:25
Аватар для Tek
Tek Tek вне форума
Профессор
Отправить личное сообщение для Tek Посмотреть профиль Найти все сообщения от Tek
 
Регистрация: 22.02.2012
Сообщений: 212

Можно ли с помощью javascript узнать "вес" страницы.
Собственно задача сделать процентный показ загрузки страницы. Для этого нужно узнать сколько весит страничка в целом и сколько загружено сейчас...
Ответить с цитированием
  #2 (permalink)  
Старый 07.01.2013, 17:14
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Tek
Можно ли с помощью javascript узнать "вес" страницы.
На самом деле задача имхо некоректно поставлена - прием страницы обычно составляет малое время, по сравнению с отражением в браузере,(если конечно не грузим большие объемы флеш)
Если страница грузится аяксом - легко получить длину Data
и по таймированию смотреть процесс отображения
Или у Вас флешь ?
Тады в получаемом файле флеш должна быть длина

Последний раз редактировалось Deff, 07.01.2013 в 17:48.
Ответить с цитированием
  #3 (permalink)  
Старый 07.01.2013, 17:47
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

моё имхо.
проценты помоему лучше всего считать в файлах а не размере файлов

приблихительно юзать так.
var ldr=new loadManager();
ldr.load('бла бла', function(){})
ldr.load('бла бла', function(){})
alert( ldr.procent ) количество процентов загруженных на данный момент


а кодить так
loadManager=function(){
    var count=0,
          load=0,
          me=this; 
              
    //метод добавляющий загрузку
    this.load=function(url, callback){
         count++;
         $.ajax({
             url:url,
             success:function(data){
                 load++;

                 //считаем %
                 me.procent=(100/count)*load;

                 callback(data);
             }
        })
    };
}


для учёта размеров файла, success - нужно написать немножко подругому (если я правильно понял то deff говорил об этом же)
success:function(data){
    load+=data.lenght;
    callback(data);

    //считаем %
    me.procent=(100/ общее ожидаемое количество символов)*load;
}


если бы речь шла о картинка и аудио в придачу, то возможно проще передать размер файла, функции load а неполучать его из lenght или откудато ещё, к томуже ожидаемый размер можно былобы посчитать динамически, зная ожидаемый размер каждого файла.
вместо одного load нам бы понадобилось множество разных функций.
{
   loadImg:function(){url, ожидаемыйРазмер, callback};
   loadSound:function(){url, ожидаемыйРазмер, callback};
   loadData:function(){url, ожидаемыйРазмер, callback};
}


Ирония в том что если даже удасться получать динамически размеры загруженных файлов всех типов, то это неизбавит от необходимости, предсказывать их размер так что передача размера через Load как мне кажется не самы глупый вариант

менеджер я для примера показал, со страницей всё можно хитрее сделать. Записываю информацию о размере файла в атрибут тега filesize="вес", и контролировать onload у тегов имеющих только атрибут filesize. Хм, помоему родиласт идея для прикольного плагина
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 07.01.2013 в 18:22.
Ответить с цитированием
  #4 (permalink)  
Старый 07.01.2013, 17:49
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

DjDiablo,
А ежели на странице ток картинки, а текста практически нет ?
Ответить с цитированием
  #5 (permalink)  
Старый 07.01.2013, 18:24
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

ну и что.

атрибут filesize="вес картинки", для каждой картинки

скрипт сложит ожидаемый вес всех картинок имеющих атрибут filesize,
при загрузке кажой картинки считаем "суммарный вес уже загруженных картинок"+=вес только что загруженной картинки
проценты = 100/общий ожидаемый вес * суммарный вес уже загруженных картинок

конечно неудобно в теге указывать вес картинки но как иначе посчитать "общий ожидаемый вес" ?
в javascript видимо никак, о весе файла ещё до загрузки, знает только сервер имеющий прямой доступ к файловой системе.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 07.01.2013 в 18:35.
Ответить с цитированием
  #6 (permalink)  
Старый 07.01.2013, 18:26
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от DjDiablo
filesize="вес картинки",
Увидел - Сорри
Ответить с цитированием
  #7 (permalink)  
Старый 07.01.2013, 18:32
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от DjDiablo
помоему родилась идея для прикольного
Из камней есть длинно/широко многоячеистые таблицы и так же фреймы
Ответить с цитированием
  #8 (permalink)  
Старый 08.01.2013, 00:15
Профессор
Посмотреть профиль Найти все сообщения от godofjavascript
 
Регистрация: 11.12.2012
Сообщений: 265

посылаешь аякс запрос на текущий урл и смотришь вес текста который придет в ответ))))
Ответить с цитированием
  #9 (permalink)  
Старый 08.01.2013, 15:58
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

а еще в новой реализации XMLHttpRequest есть событие progress где есть ProgressEvent в котором обычно и хранится инфа о загруженном количестве и о том скока всего... Но как сказал Дзен-трансгуманист, при заголовке chunked браузер не даст сумму скока всего. Но даст узнать скока загружено.

что-то вроде этого:
var req = new XMLHttpRequest();

req.addEventListener("progress", function (event) {

    var progress = 0;

    if (event.lengthComputable) {
        progress = event.loaded / event.total;
    }

    console.log(event.loaded, progress);

}, false);

req.open('GET', 'http://history.spb-piksel.ru/');

req.send(null);

Но честно скажу, я не тестил, пока не нужно было это.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 08.01.2013 в 16:04.
Ответить с цитированием
  #10 (permalink)  
Старый 08.01.2013, 16:05
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

ну вот, зашел в спецификацию, и понял что накатал чухню.. поправил код. Вроде работает, смотрите консоль.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с загрузкой страницы с помощью load и slideUp slideDown qew4 AJAX и COMET 0 16.09.2012 13:37
Как реализовать переход с одной страницы на другую с помощью клавиш "стрелок" bazilio2010 Общие вопросы Javascript 6 13.11.2011 23:58
Флэш-мульты на странице с помощью javascript SuperStar Элементы интерфейса 3 28.08.2010 10:56
Прокрутка страницы с помощью клавиш Mirgorod Events/DOM/Window 0 17.06.2010 22:39
Можно ли с помощью javascript создать онлайн(ролевую) игру? eXiN Общие вопросы Javascript 7 23.06.2009 20:57