Я переписал ваш код на обычном JavaScript, чтобы сделать его более независимым от jQuery.Основная функциональность не изменилась. Скрипка: http://jsfiddle.net/EmjQG/2/
function cached(url){
var test = document.createElement("img");
test.src = url;
return test.complete || test.width+test.height > 0;
}
var base_url = "http://www.google.com/images/srpr/nav_logo80.png"
alert("Expected: true or false\n" +
cached(base_url)
+ "\n\nExpected: false (cache-busting enabled)\n" +
cached(base_url + "?" + new Date().getTime()));
//false = not cached, true = cached
В первый раз я получаю false and false
.После повторного запуска кода я получаю true and false
.
Использование .complete
и .height
+ .width
дает ожидаемые результаты (FF 3.6.23, Chromium 14).
Весьма вероятно, что вы отключили кэширование в браузере Chrome.Если нет, проверьте HTTP-заголовки вашего обслуживаемого изображения (Cache-control
присутствует?). Этот заголовок существует в примере Google
Если вы хотите определить, когда изображение (не) закончило загрузку, взгляните на этот вопрос .