Как определить загрузилось ли изображение
Здравствуйте!
Как определить с помощью jquery окончание загрузки изображения ? |
$(image).bind('load', handler); |
exec,
У меня url подгружается через ajax, нужно запустить анимацию появления после загрузки изображения Как в этом случае определить ? $.ajax({ type: "POST", url: "/rand_header.php", data: "userHour="+myHour, success: function(pic){ $('#header').css('backgroundImage', 'url('+pic+')'); $('#header').animate({'opacity':'1'}, 230); } }); |
Andrei, background нельзя анимаировать через animate.
$.ajax({ type: "POST", url: "/rand_header.php", data: "userHour="+myHour, success: function(pic){ $('#header').append('<img style="opacity: 0;" src="' + pic + '" />').bind('load', function () { $(this).fadeIn(); }); } }); |
exec, Я анимирую DIV с background
|
exec, a если так ?
$.ajax({ type: "POST", url: "/rand_header.php", data: "userHour="+myHour, success: function(pic){ myImage = new Image(); function write(){ $('#header').css('backgroundImage', 'url('+myImage.src+')'); $('#header').animate({'opacity':'1'}, 230); } myImage.onload = write; myImage.src = '/themes/images'+pic; } }); |
Ну тогда лучше так
$.ajax({ type: "POST", url: "/rand_header.php", data: "userHour="+myHour, success: function(pic){ $('<img src="' + pic + '" />').bind('load', function () { $('#header').css('backgroundImage', this.src).fadeIn(230); }); }); } }); |
Работает, спасибо!
С fadeIn почему-то не работало, я заменил на animate |
Способ .load не работает в Opera 10.
|
Работает.
|
Если изображение не в кеше.
|
var img = new Image(); img.onload = function() { alert('load'); }; img.src = 'http://javascript.ru/forum/images/ca_serenity/misc/logo.gif';Обновляю страницу -- всё работает. |
$("img").each( function() {
$(this).bind('load', function () { alert('load'); }); }); А так? |
Ну можно данный код на onload повесить, чтобы уж наверняка все изображения на этот момент загружены были.
|
С парой сотен изображений такой подход не больно оправдан :)
|
Weeee,
это был сарказм. Вы вешаете обработчик на событие, которое уже произошло. Что вы хотите получить? Если уж сильно хочется именно такой код, то проверяйте свойство complete у изображений. |
Я его, естествено, тоже проверяю, в опере все равно не работает :)
if (this.complete) { $(this).trigger('load'); } |
Это уже не смешно даже.
$(img").each( function() { $(this).bind('load', function () { alert('bind'); }); if (this.complete){ alert('trig'); $(this).trigger('load'); } }); В опере ни одного сообщения не появляется. |
if (this.complete){ alert('hello1'); } else $(this).bind('load', function(){ alert('hello2'); }); Если изображения поместить в блок со своейством display: none;, то Opera 10 показывается hello2. Если же убрать display: none;, то мы увидим только hello1. А если изображение уже было в кеше, то вообще никакого сообщения мы не увидим! |
Короче говоря, как я и говорил, не работает.
|
var imgs = document.getElementsByTagName('img'); for (var i = 0; i < imgs.length; i++) { if (imgs[i].complete) { alert('loaded'); } else { imgs[i].onload = function() { alert('loaded'); } } } Всё работает. |
а так? ....
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1251" /> <title></title> </head> <body> <div id='img_hide' style="display: none"></div> <script language="JavaScript" type="text/javascript"> function img_load() { for (var b = document.getElementById("img_hide"), d = arguments.length, c = 0; c < arguments.length; c++) { var a = new Image; a.onload = function () { b.appendChild(this); if (b.childNodes.length == d) { b.style.display = "" } }; a.onerror = function () { var e = document.createTextNode(this.src + " \u043d\u0435\u0442 "); b.appendChild(e); if (b.childNodes.length == d) { b.style.display = "" } }; a.src = arguments[c]; (a.fileSize !== undefined ? a.fileSize > -1 : a.width) && a.onload() } }; img_load('http://javascript.ru/forum/images/ca_serenity/misc/logo.gif','logo.gif','http://javascript.ru/forum/images/ca_serenity/misc/logo.gif') </script> </body> </html> |
Опера, кстати, меня что-то с ветки 10.50 не радует.
Не по-норвежски как-то они браузер начали делать. |
а как можно проверить подгрузилось изображение или нет из css ?)
|
Часовой пояс GMT +3, время: 13:03. |