Можно ли с помощью 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, время: 06:50. |