изображение.события onload и кэш браузера
Я хочу создать окно предупреждения после загрузки изображения, но если изображение сохранено в кэше браузера, то .onload событие не уволят.
Как я могу вызвать предупреждение, когда изображение было загружено независимо от того, было ли изображение кэшировано или нет?
var img = new Image();
img.src = "img.jpg";
img.onload = function () {
alert("image is loaded");
}
5 ответов:
как вы генерируете изображение динамически, установите
onloadсобственность доsrc.var img = new Image(); img.onload = function () { alert("image is loaded"); } img.src = "img.jpg";Скрипка - протестировано на последних версиях Firefox и Chrome.
вы также можете использовать ответ на этот в должности, который я адаптировал для одного динамически генерируемые изображения:
var img = new Image(); // 'load' event $(img).on('load', function() { alert("image is loaded"); }); img.src = "img.jpg";
есть два возможных решения для подобных ситуаций:
- использовать решение, предложенное на сайте этот пост
добавить уникальный суффикс к изображению
srcчтобы заставить браузер загрузить его снова, например:var img = new Image(); img.src = "img.jpg?_="+(new Date().getTime()); img.onload = function () { alert("image is loaded"); }в этом коде каждый раз, добавляя текущую метку времени в конец URL-адреса изображения, вы делаете его уникальным, и браузер снова загружает изображение
Если src уже установлен, то событие запускается в кэшированном случае, прежде чем вы даже получите привязку обработчика событий. Таким образом, вы должны вызвать событие на основе off
.completeтоже.код:
$("img").one("load", function() { //do stuff }).each(function() { if(this.complete || /*for IE 10-*/ $(this).height() > 0) $(this).load(); });
Я встретил тот же вопрос сегодня. После попытки различных методов, я понимаю, что просто положить код калибровки внутри
$(window).load(function() {})вместоdocument.readyрешил бы часть проблемы (если вы не ajaxing страницу).
Я обнаружил, что вы можете просто сделать это в Chrome:
$('.onload-fadein').each(function (k, v) { v.onload = function () { $(this).animate({opacity: 1}, 2000); }; v.src = v.src; });настройка .src сам по себе вызовет событие onload.
Comments