Вопрос по jquery – Обработка событий загрузки изображений между браузерами

3

В документации JQuery для события загрузкиhttp://api.jquery.com/load-event/это говорит Can cease to fire for images that already live in the browser's cache, Доступна ли какая-либо дополнительная информация по этому вопросу, например, на какие браузеры он влияет и в каких ситуациях?

Ваш Ответ

1   ответ
10

var img = new Image();
img.src = "foo.jpg";
if (img.complete || img.readyState === 4) {
    // image is cached
    doneCallback();
}
else {
    $(img).on('load',doneCallback);
}

UPDATE

Если вы измените код, он будет последовательно запускать событие загрузки во всех браузерах.

var img = new Image();
$(img).load(doneCallback);
img.src = "foo.jpg";
Если в браузере кэшировано изображение, будет ли оно загружаться непосредственно после установки src (без предварительной проверки загрузки)? ddlshack
нет. Если он уже загружен, событие загрузки может не сработать.
Да, но это может не вызвать обратный вызов загрузки. Вот почему мы сначала проверяем, завершена ли уже загрузка. Если загрузка уже завершена, событие загрузки может не сработать, поэтому мы не привязываем его.
@ddlshack Примечание. Фактически, оно всегда будет запускать событие загрузки, если сначала связать событие загрузки, а затем изменить источник.
А что, если событие загрузки связано перед изменением образа src? Может ли это вызвать событие load всегда? ddlshack

Похожие вопросы