Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как определить загрузилось ли изображение (https://javascript.ru/forum/jquery/9793-kak-opredelit-zagruzilos-li-izobrazhenie.html)

Weeee 20.07.2010 17:27

Если изображение не в кеше.

Kolyaj 20.07.2010 17:38

var img = new Image();
img.onload = function() { alert('load'); };
img.src = 'http://javascript.ru/forum/images/ca_serenity/misc/logo.gif';
Обновляю страницу -- всё работает.

Weeee 20.07.2010 17:56

$("img").each( function() {
$(this).bind('load', function () {
alert('load');
});
});

А так?

Kolyaj 20.07.2010 18:03

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

Weeee 20.07.2010 18:08

С парой сотен изображений такой подход не больно оправдан :)

Kolyaj 20.07.2010 18:12

Weeee,
это был сарказм. Вы вешаете обработчик на событие, которое уже произошло. Что вы хотите получить? Если уж сильно хочется именно такой код, то проверяйте свойство complete у изображений.

Weeee 20.07.2010 18:25

Я его, естествено, тоже проверяю, в опере все равно не работает :)

if (this.complete) {
$(this).trigger('load');
}

Weeee 20.07.2010 18:32

Это уже не смешно даже.
$(img").each( function() { 

	$(this).bind('load', function () {
	     alert('bind');	
	});
	
        if (this.complete){
               alert('trig');
	       $(this).trigger('load');			
	}

		
	});


В опере ни одного сообщения не появляется.

Weeee 20.07.2010 18:53

if (this.complete){
		alert('hello1');
	} else $(this).bind('load', function(){
                alert('hello2');
	});


Если изображения поместить в блок со своейством display: none;, то Opera 10 показывается hello2. Если же убрать display: none;, то мы увидим только hello1.

А если изображение уже было в кеше, то вообще никакого сообщения мы не увидим!

Weeee 20.07.2010 20:38

Короче говоря, как я и говорил, не работает.


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