Вы можете использовать xmlhttprequest и использовать синхронный режим.
var url = "image.php?sleep=3";
var img = new Image;
var sjax = new XMLHttpRequest();
img.src = url;
sjax.open("GET", url, false);
sjax.send(null);
alert(img.complete);
Хитрость в том, что мы загружаем одно и то же изображение дважды, сначала используя объект Image
, а также используя ajax в синхронном режиме. Объект Image
не нужен, я просто предположил, что вы так хотите его загрузить. Ключевым моментом является то, что если ajax завершится, то изображение будет полностью загружено в кеш браузера. Таким образом, изображение также будет доступно для использования объектом Image
.
Предполагается, что изображение обслуживается с http-заголовками, дружественными к кешу. В противном случае его поведение может отличаться в разных браузерах.