Как перезагрузить/освежить элемент (изображение) в jQuery

Действительно ли возможно перезагрузить изображение с идентичным именем файла от сервера, используя jQuery?

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

т.е.:

  • Пользователь рассматривает изображение на странице по умолчанию
  • Пользователь загружает новое изображение
  • Изображение по умолчанию на странице не изменяется (я предполагаю, что это происходит из-за имени файла, являющегося идентичным, браузер использует кэшированную версию),

Независимо от того, как часто ниже называют кодекс, та же проблема сохраняется.

$("#myimg").attr("src", "/myimg.jpg");

В документации jQuery функция «груза» была бы прекрасна, если бы у нее был метод по умолчанию увольнения события в противоположность закреплению функции обратного вызова к успешному/полному грузу элемента.

Любая помощь значительно ценится.

252
задан Alexis Abril 20 January 2010 в 11:02
поделиться

4 ответа

Похоже, это ваш браузер, кэширующий образ (который я сейчас замечаю, как вы написали на своем вопросе). Вы можете заставить браузер перезагрузить изображение, передавая дополнительную переменную, как так:

d = new Date();
$("#myimg").attr("src", "/myimg.jpg?"+d.getTime());
531
ответ дан 23 November 2019 в 02:51
поделиться

Это может быть одна из двух проблем, которые вы упоминаете о себе Отказ

  1. Сервер кэширует изображение
  2. jQuery не огонь или, по крайней мере, не обновляет атрибут

, чтобы быть честным, я думаю, что это номер два. Было бы намного проще, если бы мы могли видеть еще немного jQuery. Но для начала попробуйте сначала удалить атрибут, а затем снова установите его. Просто чтобы посмотреть, поможет ли это:

$("#myimg").removeAttr("src").attr("src", "/myimg.jpg");

Даже если это работает, опубликовать какой-нибудь код, так как это не оптимально, IMO: -)

-121--573890-

Это, вероятно, не самый лучший способ, но я решил эту проблему в прошлом, просто добавив временную точку отметки к URL-адресу изображений с помощью JavaScript:

$("#myimg").attr("src", "/myimg.jpg?timestamp=" + new Date().getTime());

в следующий раз, когда он загружает, Timestamp Установите на текущее время и URL отличается, поэтому браузер делает получение для изображения вместо использования кэшированной версии.

55
ответ дан 23 November 2019 в 02:51
поделиться

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

  1. Сервер кэширует изображение
  2. jQuery не огонь или, по крайней мере, не обновляет атрибут

, чтобы быть честным, я думаю, что это номер два. Было бы намного проще, если бы мы могли видеть еще немного jQuery. Но для начала попробуйте сначала удалить атрибут, а затем снова установите его. Просто чтобы посмотреть, поможет ли это:

$("#myimg").removeAttr("src").attr("src", "/myimg.jpg");

Даже если это работает, опубликовать какой-нибудь код, поскольку это не оптимально, IMO: -)

25
ответ дан 23 November 2019 в 02:51
поделиться

Вы пытались сбросить контейнеры изображения HTML. Конечно, если это браузер, который кэширует, это не поможет.

function imageUploadComplete () {
    $("#image_container").html("<img src='" + newImageUrl + "'>");
}
2
ответ дан 23 November 2019 в 02:51
поделиться
Другие вопросы по тегам:

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