Ответ 1
$('img').on('load', function() {
// do whatever you want
});
Как определить, когда изображение загрузилось с сервера или в кеш браузера?
Я хочу загрузить различные изображения в тег <img/>
и определить, когда закончилась загрузка новых изображений.
Спасибо.
$('img').on('load', function() {
// do whatever you want
});
Событие документа onload
будет срабатывать только после полной загрузки всех элементов, включая изображения.
onload
<img> событие будет срабатывать после полной загрузки одного изображения.
Итак, вы можете присоединить слушателя к этим событиям, используя объекты jQuery или DOM addEventListener (и IE attachEvent)
Я думаю, что это выглядит немного чище
$('img').load(function() {
// Your img has finished loading!
});
Хорошо, это довольно старая нить, с которой я столкнулся вчера. Я использую backbone.js и require.js, и изменение размера моего макета всегда вызывало проблемы с представлениями, которые содержат изображения.
Итак, мне нужен был способ узнать, когда последнее изображение закончило загрузку, чтобы изменить размер макета. Все упомянутые выше решения не работали в моем случае. После нескольких часов больше исследований я нашел окончательное решение, которое работает:
http://desandro.github.com/imagesloaded/
Надеюсь, что это поможет и другим.
Для более тщательного определения загрузки изображения, включая изображения, загруженные из кеша, попробуйте следующее: https://github.com/paulirish/jquery.imgloaded
Из очень похожего вопроса Официальный способ спросить jQuery ждать загрузки всех изображений перед выполнением чего-либо и точно так же, как говорит Пикрасс:
С помощью jQuery вы используете
$(document).ready()
для выполнения чего-либо при загрузке DOM и$(window).load()
для выполнения чего-либо, когда загружаются все другие вещи, например изображения.
Вот два примера:
jQuery(document).ready(function(){
console.log('DOM ready');
});
jQuery(window).load(function(){
console.log('all other things ready');
});
Вы должны иметь возможность подтвердить свою консоль:
screenshot-with-shadow.png http://img547.imageshack.us/img547/9681/yih.png
Все говорили о том, что событие должно быть запущено перед установкой src.
Но если вы не хотите беспокоиться об этом, вы можете использовать событие oncomplete
(будет запущено даже с кешированными изображениями), чтобы запустить onload
, например:
$("img").one("load", function() {
// do stuff
}).each(function() {
if(this.complete) $(this).load();
});
Используя jQuery, вам не нужно беспокоиться о обратной совместимости (например: img.height>0
в IE
)