Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Время загрузки картинки (https://javascript.ru/forum/misc/8376-vremya-zagruzki-kartinki.html)

Snipe 24.03.2010 12:18

Цитата:

Сообщение от Nekromancer (Сообщение 48729)
<script type="text/javascript">
function now(){
	return (new Date).getTime();
}
var Time = now();
</script>
<img src="http://javascript.ru/files/onready/img5.php" onload="alert(now()-Time)">

Так уже писал, что при большом количестве картинок в этом случае мы не получим время загрузки конкретно этой картинки.

Nekromancer 24.03.2010 13:08

Так ставь скрипт непосредственно перед этой картинкой. Или ты имеешь введу что у браузера ограниченное количество одновременно загружаемых картинок?

Snipe 24.03.2010 13:36

Цитата:

Сообщение от Nekromancer (Сообщение 48877)
Так ставь скрипт непосредственно перед этой картинкой. Или ты имеешь введу что у браузера ограниченное количество одновременно загружаемых картинок?

Ага, браузер одновременно грузит несколько картинок параллельно загрузке ДОМа. И то что мы засекли время с помощью JS перед картинкой не значит, что картинка начала грузиться.

vk65535 24.03.2010 13:53

Остается только ждать onload-а страницы, потом создавать картинку.
Если б это было в осле, можно было бы помудрить с onreadystatechange.

Nekromancer 24.03.2010 15:01

<script type="text/javascript">
function now(){
	return (new Date).getTime();
}
var timer = 0,
loadimg = function(img){
timer = now();
img.src = 'http://javascript.ru/files/onready/img5.php';
},
loadedimg = function(img){
var loadtime = now()-timer;
alert(loadtime);
};
</script>
<img src="javascript:true;" onerror="loadimg(this)" onload="loadedimg(this)" alt="Загрзука.." title="Загрзука..">

Nekromancer 24.03.2010 16:15

<script type="text/javascript">
function now(){
    return (new Date).getTime();
}
var firstErr = true, firstLoad = true, time;
function isError(img){
	if(firstErr){
		time = now();
		img.src = 'http://javascript.ru/files/onready/img5.php';
		firstErr = false;
	} 
}
function isLoad(img){
	if(firstLoad&&window.opera) firstLoad = false;
	else alert(now()-time)
}
</script>
<img src="javascript:;" onerror="isError(this)" onload="isLoad(this)"  alt="Загрзука.." title="Загрзука..">


Вот так вот, с фиксом оперы. Грубо, но как есть )

Snipe 24.03.2010 18:46

Ага, спасибо, похоже на правду. Будем пробовать.

Nekromancer 24.03.2010 20:07

Ещё раз пардон, так короче и кроссбраузернее)) Раньше чего то не подумал..
<script type="text/javascript">
function now(){
    return (new Date).getTime();
}
var time;
function isError(img){
	time = now();
	img.src = 'http://javascript.ru/files/onready/img5.php';
}
function isLoad(img){
	alert(now()-time)
}
</script>
<img src="about:blank" onerror="isError(this);" onload="isLoad(this)"  alt="Загрзука.." title="Загрзука..">

Snipe 25.03.2010 11:07

Забавно, но кардинальные различия (между временем обычной загрузки и временем от еррор до загрузки) заметны только в FF.
В остальных браузерах почти нет разницы.

Nekromancer 25.03.2010 11:19

На сколько кардинальные?)


Часовой пояс GMT +3, время: 12:40.