Можно ли с помощью javascript узнать "вес" страницы.
Собственно задача сделать процентный показ загрузки страницы. Для этого нужно узнать сколько весит страничка в целом и сколько загружено сейчас...
|
Цитата:
Если страница грузится аяксом - легко получить длину Data и по таймированию смотреть процесс отображения Или у Вас флешь ? Тады в получаемом файле флеш должна быть длина |
моё имхо.
проценты помоему лучше всего считать в файлах а не размере файлов приблихительно юзать так. 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,
:) А ежели на странице ток картинки, а текста практически нет ? |
ну и что.
атрибут filesize="вес картинки", для каждой картинки скрипт сложит ожидаемый вес всех картинок имеющих атрибут filesize, при загрузке кажой картинки считаем "суммарный вес уже загруженных картинок"+=вес только что загруженной картинки проценты = 100/общий ожидаемый вес * суммарный вес уже загруженных картинок конечно неудобно в теге указывать вес картинки но как иначе посчитать "общий ожидаемый вес" ? в javascript видимо никак, о весе файла ещё до загрузки, знает только сервер имеющий прямой доступ к файловой системе. |
Цитата:
|
Цитата:
|
посылаешь аякс запрос на текущий урл и смотришь вес текста который придет в ответ))))
|
а еще в новой реализации 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); Но честно скажу, я не тестил, пока не нужно было это. |
ну вот, зашел в спецификацию, и понял что накатал чухню.. поправил код. Вроде работает, смотрите консоль.
|
Часовой пояс GMT +3, время: 21:35. |