У меня есть простой сценарий загрузки с двумя изображениями:
$('.img-loading').show();
// main image loaded ?
$('.the-big-img').hide().load(function () {
// hide/remove the loading image
$('.img-loading').hide();
$('.the-big-img').fadeIn();
});
Однако... это, похоже, работает только в большинстве случаев. Несколько раз я остаюсь с загружаемым изображением без отображения Big img. Я не уверен, в каких случаях изображение не отображается (все они хранятся на моем локальном хосте и соответствуют тем же критериям).
Если я нажму F5/refresh на страницах, где Big img не загрузился, они будут загружаться во второй раз.
Есть предположения?
UPDATE: нашел некоторую информацию здесь о кеше: jQuery.load() не стреляет в изображения (возможно, кеширование?)
Я тоже дам вам пару других решений, если то, что вы нашли, не получилось.
Это говорит браузеру каждый раз загружать новую версию файла, устраняя проблему с кешем.
Header unset ETag
FileETag None
img-loading
в hide () +the-big-img
в fadeIn () внутриload()
. Также, дайте им обоим один и тот же класс и используйтеid="img-loading"
т. Д. Для специфичности. Затем вы можете вызвать$('.both-images-to-load').load()
и он загрузится, когда они оба будут завершены.load()
не запускается, потому что браузер никогда не запрашивает его. Вот почему вы не видите другое изображение до тех пор, пока не обновите его (обновление очищает кэш, чтобы получить новое изображение)